Beim Scraping fragt die Site möglicherweise nach den (geografischen) Standortinformationen Ihres Browsers. Dieser Artikel ist eine persönliche Anmerkung zur Lösung bei Verwendung von Selenium + Headless Chrome + Python.
EC2 (Amazon Linux 2 AMI)
Setting sensors (location) in headless Chrome
・ Selen ・ Chrome-Treiber (85.0.4183.87) ・ Python3 (3.6.2)
Beim Versuch, eine bestimmte Site mit Headless Chrome zu kratzen, tritt ein Fehler auf. Als ich den Screenshot überprüfte, wurde das folgende Popup angezeigt und ich konnte nicht auf die angegebene Seite zugreifen.
__ * "Die Verarbeitung ist nicht möglich, da die Standortinformationen nicht abgerufen werden konnten. Bitte geben Sie die Standortinformationen an." * __
Aufgrund verschiedener Untersuchungen scheint die Ursache darin zu liegen, dass die Standortinformationen des Browsers nicht bestätigt werden konnten.
Daher habe ich nach einer Möglichkeit gesucht, Standortinformationen in Headless Chrome festzulegen, aber es gibt überraschend wenig Informationen. .. ..
Ich habe mich gefragt, ob es überhaupt eine Möglichkeit gibt, die Standortinformationen im Chrome-Browser festzulegen. Als ich sie nachgeschlagen habe, scheint es, dass sie über die Entwicklertools festgelegt werden können.
Als ich mich fragte: "Ist es nicht möglich, das Problem zu lösen, wenn die Entwicklertools auch mit kopflosem Chrom betrieben werden können?", Stellte eine Person dieselbe Frage im Stapelüberlauf, und es wurde eine Lösung vorgestellt. Anscheinend wird eine Methode namens execute_cdp_cmd () verwendet.
execute_cdp_cmd() Es scheint, dass Sie das Google Developper-Tool mit der Methode selenium.webdriver einstellen können.
Ein Beispiel für die Code-Implementierung finden Sie unten
location_setting.py
from selenium import webdriver
def start_chrome_driver():
options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("--disable-gpu")
# executable_Bitte ändern Sie den Pfad je nach Umgebung
driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver", chrome_options=options)
return driver
#Starten Sie Headless Chrome
driver = start_chrome_driver()
#Einstellen von Standortinformationen zulassen (Standortinformationen können nicht ohne Erlaubnis festgelegt werden)
driver.execute_cdp_cmd(
"Browser.grantPermissions",
{
"origin": "https://hromssp.obc.jp/",
"permissions": ["geolocation"]
},
)
#Breiten-, Längen-, Breiten- / Längenfehler(Einheit: m)Einstellen
driver.execute_cdp_cmd(
"Emulation.setGeolocationOverride",
{
"latitude": 35.689487,
"longitude": 139.691706,
"accuracy": 100,
},
)
Jetzt können Sie die Standortinformationen (Identitätswechsel?) In Headless Chrome festlegen und auf die Seite zugreifen, die Sie kratzen möchten!
Recommended Posts