Ich versuche Produktinformationen von lowes.com zu scraphen. Mein Test ist speziell dieses Produkt AirStone 8-sq ft Autumn Mountain Faux Stone Veneer. Wenn ich die Seite ohne aktiviertes JavaScript besuche (um sicherzustellen, dass ich keine Sachen sehe, die urllib/requests nicht aufnehmen können), bekomme ich eindeutig einen Preis für den Gegenstand, wenn ich versuche, eines der oben genannten Pakete zu verwenden die Webseite.Webscraping nicht Urlib gesamte Anfrage oder Anfragen abrufen
Es ist einfach so, dass diese Abschnitte die Abschnitte sind, die ich zum Scraping brauche (Preisinformationen speziell, alles andere ist magisch noch immer verfügbar). Ich würde es vorziehen, Selen nicht für Geschwindigkeiten zu verwenden. Meine aktuelle Nutzung für beide Anfragen und urllib suchen thusly
Gemeinsame Elemente
from urlopen import Request, urlopen
import requests # switch as needed with urlopen
import gzip # manual deflation required with Request object urlopen or so I've found
url = "https://www.lowes.com/pd/AirStone-8-sq-ft-Autumn-Mountain-Faux-Stone-Veneer/50247201"
headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en-US,en;q=0.8",
"Cache-Control": "no-cache",
"Connection": "keep-alive",
"DNT": "1",
# "Host": "www.lowes.com", Tried, no difference
"Pragma": "no-cache",
# "Referer": "https://www.lowes.com/", Tried, no difference
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1 Win64 x64) AppleWebKit/537.36 (KHTML,"
" like Gecko) Chrome/59.0.3071.115 Safari/537.36" # <=- Tried placing all on one line, didn't make a difference
}
urlopen
req = Request(url, None, headers)
page = gzip.decompress(urlopen(req).read()).decode('utf-8')
with open("content.txt", "w") as f:
f.write(page) # <=- missing the 59.97 price tag anywhere in the document :(
Anfragen
sessions = requests.Session()
page = sessions.get(self.url, headers=headers)
with open("content.txt", "w") as f:
f.write(page) # <=- Also missing the 59.97 price tag anywhere in the document :'(
So Frage ist, bin ich etwas fehlt? Gibt es dafür einen Grund? Es ist nicht mit Javascript verwandt, da ich es absichtlich deaktiviere, bevor ich versuche, die Daten zu scrappen, da ich gesehen habe, dass das ein Problem war.
Jede Hilfe würde sehr geschätzt werden.
Die Seite, die Sie zurück erhalten, sagt "Geben Sie Ihren Standort für Preise und Verfügbarkeit ein" - in einem tatsächlichen Browser haben Sie wahrscheinlich einen Cookie von einem früheren Besuch, der Ihren Standort der Website zur Verfügung stellt. Ich bin mir sicher, dass es möglich ist, einen Cookie mit einer Ihrer Anfrage-Methoden zu integrieren, aber ich kenne die Details nicht. – jasonharper
Das ist ein erstaunlicher Fang Ich dachte ich hätte Cookies gelöscht. Anscheinend hatte ich nicht. Das ist sehr geschätzt guter Internet-Bewohner :) Tally-Ho zu sehen, was ich herausfinden kann – Akidi