Als ich mit Selenium + Headless Chrome geschabt habe, bin ich auf eine Website gestoßen, auf der ich Informationen im Kopfmodus abrufen konnte. Sobald ich sie jedoch kopflos gemacht habe, wurde ein NoSuchElementException-Fehler angezeigt. Es gab nicht viele japanische Artikel über Problemumgehungen, daher werde ich sie veröffentlichen.
-Schaben ist im Kopfmodus möglich. -Eine NoSuchElementException trat auf, sobald die Option ohne Kopf hinzugefügt wurde.
Es scheint, dass das Element nicht erhalten wurde, daher habe ich die Quelle der Site mit driver.page_source überprüft.
scraping.py
driver.page_source
Der zurückgegebene HTML-Code enthält die Wörter "Zugriff verweigert", und es scheint, dass der Zugriff von Headless verweigert wird.
<html><head>
webapp_1 | <title>Access Denied</title>
webapp_1 | </head><body>
webapp_1 | <h1>Access Denied</h1>
webapp_1 |
webapp_1 | You don't have permission to access "http://www.xxxxxxx/" on this server.<p>
Bei der Prüfung verfügte der Chrome-Treiber über eine user_agent-Option, auf die über einen Browser zugegriffen werden konnte. Wenn Sie dies zur Option chromedrivere hinzufügen, können Sie das Element sicher erhalten.
scraping.py
options = webdriver.ChromeOptions()
options.binary_location = '/usr/bin/google-chrome'
options.add_argument('--no-sandbox')
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--lang=ja-JP')
options.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36') #hinzufügen
das ist alles
Recommended Posts