[Python + Selen] Tipps zum Scraping

Über diesen Artikel

Früher habe ich in der Praxis geschabt, daher ist dies ein Memo des Tricks, den ich damals eingegeben habe.

Werkzeug

Python3(3.6.2) Selenium Chrome driver(85.0.4183.87)

1. Bedienen Sie js (versteckte Elemente anzeigen)

Sie können Javascript von Selenium aus mit der Methode execute_script ausführen.

Sie können beispielsweise die Textfarbe ändern, indem Sie die Methode js setAttribute wie unten gezeigt bearbeiten.

python


from selenium import webdriver
driver = webdriver.Chrome()

driver.get("https://www.hogefuga")

element = driver.find_element_by_xpath("//div[@class='fuga']/span")
driver.execute_script("arguments[0].setAttribute('style','color: red;')", element)

Sie können diese Methode auch verwenden, um Elemente anzuzeigen, die angezeigt werden: keine; Das ausgeblendete Element kann beispielsweise angezeigt werden, indem der Klassenname gelöscht wird, auf den display: none; aus dem ausgeblendeten Element angewendet wird.

python


#Anzeige in enger Klasse:none;Wenn angewendet wird
element = driver.find_element_by_xpath("//div[@class='hoge close']/span")
driver.execute_script("arguments[0].setAttribute('class','hoge')", element)

2. Holen Sie sich die Elemente in den Iframe

Sie benötigen ** switch_to_frame () **, um die Elemente in ifame zu erhalten.

python


driver.switch_to_frame(driver.find_element_by_xpath("//div[@class='hoge']/iframe"))

Jetzt können Sie die Elemente in ifame verfügbar machen. Andererseits können Elemente außerhalb des Iframes nicht erhalten werden. Wenn Sie das ursprüngliche Element abrufen möchten, müssen Sie daher wechseln, damit Sie das ursprüngliche Element über ** switch_to_default_content () ** wieder abrufen können.

python


driver.switch_to_default_content()

3. Schalten Sie das Betriebsziel von Selen in ein anderes Fenster

Beim Betrieb von Selen und beim Schaben wird möglicherweise ein anderes Fenster geöffnet, nachdem Sie auf den Link geklickt haben. Wenn Sie eine Operation in einem anderen Fenster ausführen möchten, verwenden Sie ** switch_to_window () **, um das Operationsziel in ein anderes Fenster zu wechseln.

python


#Öffne ein anderes Fenster
driver.find_element_by_xpath("//div[@class='hoge']/a").click()

#Fenster, das von Anfang an geöffnet ist
window_before = driver.window_handles[0]
#Neu geöffnetes Fenster
window_after = driver.window_handles[1]

#Schalten Sie das Betriebsziel von Selen auf das neu angezeigte Fenster
driver.switch_to_window(window_after)

#Schalten Sie das Betriebsziel von Selen auf das von Anfang an geöffnete Fenster
driver.switch_to_window(window_before)

4. Klicken Sie auf das Optionsfeld

python


#Optionsfeldelement abrufen
element = driver.find_element_by_id(“fugafuga”)

driver.execute_script("arguments[0].click();", element)

5. Laden Sie die Datei mit Headless Chrome von der WEB-Seite herunter

Headless Chrome scheint die Datei-Download-Funktion aus Sicherheitsgründen nicht standardmäßig zu implementieren. Daher scheint es notwendig zu sein, das Herunterladen von Dateien per Post-Kommunikation zuzulassen.

python


from selenium import webdriver

DOWNLOAD_URL = "https:www.hogefuga/file/download"
download_dir = "/home/download"  #Speicherort der heruntergeladenen Dateien

def enable_download(driver, download_dir):
    driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')
    params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
    driver.execute("send_command", params)

def setting_chrome_options():
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument('--no-sandbox')
    return chrome_options;

driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver",options=setting_chrome_options())
enable_download(driver, download_dir)
driver.get(DOWNLOAD_URL)

Recommended Posts

[Python + Selen] Tipps zum Scraping
Selen + WebDriver (Chrome) + Python | Erstellen einer Umgebung zum Scraping
Schaben mit Selen in Python
Schaben mit Selen + Python Teil 1
Scraping mit Selen in Python
Schaben mit Selen + Python Teil 2
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Python-Tipps
[Scraping] Python-Scraping
Python-Tipps
Python-Tipps
Scraping mit Selen in Python (Basic)
Scraping mit Python, Selen und Chromedriver
[TouchDesigner] Tipps für die Anweisung von Python
Tipps zum Aufrufen von Python von C.
Web Scraping für Anfänger in Python (4) -1
2016-10-30 sonst für Python3> für:
Python Conda Tipps
Python [für mich]
Python-Scraping-Memo
Schaben mit Selen
[Python / Selen] XPath
Python Scraping get_ranker_categories
Schaben mit Selen ~ 2 ~
Scraping mit Python
WEB-Scraping mit Python (für persönliche Notizen)
Scraping mit Python
Tipps zum Python-Debuggen
Tipps zum Umgang mit Binärdateien in Python
Python-Klick-Tipps
Unerwartet (?) Python Bean Wissen
Schaben mit Selen
Tipps zur Verwendung von Python + Caffe mit TSUBAME
Python: Scraping Teil 1
Tipps zum Erstellen kleiner Werkzeuge mit Python
Üben des Web-Scrapings mit Python und Selen
Scraping mit Python
Vorbereitung zum Schaben mit Python [Schokoladengeschmack]
Download-Datei für Python Selen Chrome überschreiben
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Python: Scraping Teil 2
Ich habe versucht, Web-Scraping mit Python und Selen
~ Tipps für Python-Anfänger mit Liebe von Pythonista ① ~
Scraping dynamisch geladener TV-Programmlisten [Python] [Selen]
Tipps zum Erreichen der ATND-API mit Python
[Python / Chrome] Grundeinstellungen und Operationen zum Scraping
~ Tipps für Python-Anfänger mit Liebe von Pythonista ② ~
Über Python für Schleife
Scraping in Python (Vorbereitung)
Python- und Numpy-Tipps
Python-Grundlagen ② für Anweisung
UnicodeEncodeError: 'cp932' während des Python-Scrapings
Grundlagen der Python-Scraping-Grundlagen
Scraping mit Python + PhantomJS
Über Python für ~ (Bereich)
Python Lehrbuch für Anfänger
Python-Tipps (mein Memo)
Refactoring-Tools, die mit Python verwendet werden können
Screenshot mit Selen (Python Edition)