[PYTHON] So legen Sie den Browserstandort in Headless Chrome fest

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.

Umgebung

EC2 (Amazon Linux 2 AMI)

Referenz

Setting sensors (location) in headless Chrome

Werkzeug

・ Selen ・ Chrome-Treiber (85.0.4183.87) ・ Python3 (3.6.2)

Warum Sie Standortinformationen benötigen

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.

So legen Sie Standortinformationen in Headless Chrome fest

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,
    },
)

Ergebnis

Jetzt können Sie die Standortinformationen (Identitätswechsel?) In Headless Chrome festlegen und auf die Seite zugreifen, die Sie kratzen möchten!

Recommended Posts

So legen Sie den Browserstandort in Headless Chrome fest
So kratzen Sie Seiten, denen in Selenium + Headless Chrome "Zugriff verweigert" wurde
So laden Sie Dateien von Selenium of Python in Chrome herunter
Wie man in Python entwickelt
So importieren Sie die in EFS eingerichtete Python-Bibliothek in Lambda
So legen Sie das HTML-Klassenattribut in Djangos forms.py fest
[Python] Wie man PCA mit Python macht
Umgang mit Sitzungen in SQLAlchemy
Verwendung von Klassen in Theano
Wie man nüchtern mit Pandas schreibt
So sammeln Sie Bilder in Python
So aktualisieren Sie Spyder in Anaconda
Verwendung von SQLite in Python
So konvertieren Sie 0,5 in 1056964608 auf einmal
Wie man CSS in Django reflektiert
Wie man Prozesse in großen Mengen abbricht
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
So führen Sie TensorFlow 1.0-Code in 2.0 aus
Umgang mit Japanisch mit Python
So melden Sie sich bei Docker + NGINX an
So rufen Sie PyTorch in Julia an
So stellen Sie die Ausgabeauflösung für jeden Keyframe in Blender ein
Verwendung berechneter Spalten in CASTable
[Blender] So legen Sie shape_key mit dem Skript fest
[Einführung in Python] Wie verwende ich eine Klasse in Python?
So unterdrücken Sie Anzeigefehler in matplotlib
So überprüfen Sie die lokale GAE über den iPhone-Browser im selben LAN
Dynamisches Definieren von Variablen in Python
Wie man optuna einstellt (wie man einen Suchraum schreibt)
So machen Sie R chartr () in Python
So konvertieren Sie csv in tsv in CLI
So richten Sie SVM mit Optuna ein
So stellen Sie die Serverzeit auf japanische Zeit ein
So löschen Sie abgelaufene Sitzungen in Django
[Itertools.permutations] So löschen Sie eine Sequenz in Python
Verwendung von Google Test in C-Sprache
So setzen Sie die Standardcodierung in Python auf utf-8
So implementieren Sie einen verschachtelten Serializer mit drf-flex-Feldern
So arbeiten Sie mit BigQuery in Python
So stellen Sie xg boost mit Optuna ein
So führen Sie Befehle mit einem Jupyter-Notebook aus
Wie man in GitPython '--gags fetch --tags' macht
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
So extrahieren Sie einen Polygonbereich in Python
So weisen Sie den Index im Pandas-Datenrahmen neu zu
So überprüfen Sie die Version von opencv mit Python
So aktivieren Sie SSL (TLS) in Apache
Verwendung von Anacondas Interpreter mit PyCharm
So legen Sie ein nicht geprüftes Ziel in Flake8 fest
[Python] So stellen Sie mit Selenium die (Client-) Fenstergröße im Browser ein
Umgang mit aufeinanderfolgenden Werten in MySQL
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
So füllen Sie mit Python dynamisch Nullen aus