macOS Catalina 10.15.3 Python 3.6.5
Recherchez sur Google avec n'importe quel mot et obtenez une liste des résultats de recherche jusqu'à n'importe quel nombre de pages Titre de sortie et URL vers csv
# !python3
#Obtenez le titre et l'URL des résultats de recherche Google et affichez le fichier CSV
import time, chromedriver_binary, os, csv
from selenium import webdriver
output_path = "/Répertoire de sortie final csv
os.chdir(putput_path)
driver = webdriver.Chrome() #Préparer Chrome
#Ouvrez le HTML
driver.get("https://www.google.com/") #Ouvrez Google
search = driver.find_element_by_name("q") #Barre de recherche"q"Spécifier
search.send_keys(“xxx yyy zzz“) #Envoyer le mot de recherche
search.submit() #Effectuer une recherche
time.sleep(3) #Attendez 3 secondes
def ranking(driver):
i = 1 #Fixé à 1
i_max = 10 #Combien de pages souhaitez-vous rechercher?
title_list = []
link_list = []
#Boucle jusqu'à ce que la page actuelle dépasse la page d'analyse maximale spécifiée(i_max)
while i <= i_max:
#Le titre et le lien sont de classe="r"Est dans
class_group = driver.find_elements_by_class_name("r")
# class="r"Extraire les titres et les liens de,Boucle For à ajouter à la liste
for elem in class_group:
title_list.append(elem.find_element_by_class_name('LC20lb').text) #Titre(class="LC20lb")
link_list.append(elem.find_element_by_tag_name('a').get_attribute('href')) #Lien(href d'une balise)
#Il n'y a qu'un seul bouton "Suivant", mais j'ose rechercher plusieurs éléments par éléments.S'il s'agit d'une liste vide, cela signifie la dernière page.
if driver.find_elements_by_id("pnnext") == []:
i = i_max + 1 #Sans la page suivante,Dépasse de force le nombre maximum de pages et met fin à la boucle
else:
#L'URL de la page suivante est id="pnnext"Attribut Href
next_page = driver.find_element_by_id("pnnext").get_attribute("href")
driver.get(next_page)
i = i + 1 #Parcourez la page
time.sleep(3) #3 secondes de pause,Répétez cette opération jusqu'au nombre maximal de pages spécifié
return title_list, link_list
#Exécutez la fonction de classement définie ci-dessus pour obtenir le titre et la liste d'URL
title, link = ranking(driver)
#Cracher avec csv[[a,1],[b,2]]Créez une liste comme
result = [list(row) for row in zip(title, link)]
#sortie csv en utilisant result
with open("result.csv", mode="w", encoding="utf-8") as f:
writer = csv.writer(f, lineterminator="\n")
writer.writerows(result)
#Fermer le navigateur
driver.quit()