macOS Catalina 10.15.3 Python 3.6.5
Durchsuchen Sie Google mit einem beliebigen Wort und erhalten Sie eine Liste der Suchergebnisse mit einer beliebigen Anzahl von Seiten Titel und URL an csv ausgeben
# !python3
#Holen Sie sich den Titel und die URL der Google-Suchergebnisse und geben Sie csv aus
import time, chromedriver_binary, os, csv
from selenium import webdriver
output_path = "/Endgültiges CSV-Ausgabeverzeichnis
os.chdir(putput_path)
driver = webdriver.Chrome() #Bereiten Sie Chrome vor
#Öffnen Sie HTML
driver.get("https://www.google.com/") #Öffnen Sie Google
search = driver.find_element_by_name("q") #Suchbox"q"Konkretisieren
search.send_keys(“xxx yyy zzz“) #Suchwort senden
search.submit() #Führen Sie eine Suche durch
time.sleep(3) #Warten Sie 3 Sekunden
def ranking(driver):
i = 1 #Fest auf 1
i_max = 10 #Wie viele Seiten möchten Sie durchsuchen?
title_list = []
link_list = []
#Schleife, bis die aktuelle Seite die angegebene maximale Analyseseite überschreitet(i_max)
while i <= i_max:
#Titel und Link sind Klasse="r"Ist in
class_group = driver.find_elements_by_class_name("r")
# class="r"Extrahieren Sie Titel und Links aus,For-Schleife zur Liste hinzufügen
for elem in class_group:
title_list.append(elem.find_element_by_class_name('LC20lb').text) #Titel(class="LC20lb")
link_list.append(elem.find_element_by_tag_name('a').get_attribute('href')) #Verknüpfung(href eines Tags)
#Es gibt nur einen "Weiter" -Button, aber ich wage es, mehrere nach Elementen zu suchen.Wenn es sich um eine leere Liste handelt, bedeutet dies die letzte Seite.
if driver.find_elements_by_id("pnnext") == []:
i = i_max + 1 #Ohne die nächste Seite,Überschreitet gewaltsam die maximale Anzahl von Seiten und beendet die Schleife
else:
#Die URL der nächsten Seite lautet id="pnnext"Href-Attribut
next_page = driver.find_element_by_id("pnnext").get_attribute("href")
driver.get(next_page)
i = i + 1 #Gehen Sie die Seite durch
time.sleep(3) #3 Sekunden Pause,Wiederholen Sie diesen Vorgang bis zur angegebenen maximalen Seitenzahl
return title_list, link_list
#Führen Sie die oben definierte Ranking-Funktion aus, um den Titel und die URL-Liste abzurufen
title, link = ranking(driver)
#Mit csv ausspucken[[a,1],[b,2]]Erstellen Sie eine Liste wie
result = [list(row) for row in zip(title, link)]
#CSV-Ausgabe mit Ergebnis
with open("result.csv", mode="w", encoding="utf-8") as f:
writer = csv.writer(f, lineterminator="\n")
writer.writerows(result)
#Browser schließen
driver.quit()
Recommended Posts