Lorsque j'ai recherché quelque chose, je voulais extraire le résumé, le titre et l'URL de la recherche Google, car le résumé Google me dit ce que je veux rechercher.
Automatisez la recherche Google, obtenez des résultats de recherche, convertissez en CSV et produisez. En automatisant, vous pouvez réduire le temps passé à rechercher.
Windows10Pro
Python3.7
Anaconda
Le programme créé cette fois-ci est basé sur la version 81 de Chrome. Par conséquent, veuillez définir la version de Chrome sur 81 avant d'exécuter le programme. ↓ C'est facile à comprendre. Comment vérifier la version de Google Chrome
pip install selenium
pip install chromedriver_binary
import csv
import time #Requis pour utiliser le sommeil
from selenium import webdriver #Utiliser automatiquement le navigateur Web (python-m pip install selenium)
import chromedriver_binary #Code pour passer le chemin
def ranking(driver):
i = 1 #Définir le numéro de boucle et le numéro de page
title_list = [] #Préparez une liste vide pour stocker le titre
link_list = [] #Préparez une liste vide pour stocker l'URL
summary_list = []
RelatedKeywords = []
#Boucle jusqu'à ce que la page actuelle dépasse la page d'analyse maximale spécifiée
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_group1 = driver.find_elements_by_class_name('s')
class_group2 = driver.find_elements_by_class_name('nVcaUb')
#Boucle For qui extrait les titres et les liens et les ajoute à 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(attribut href d'une balise)
for elem in class_group1:
summary_list.append(elem.find_element_by_class_name('st').text) #Lien(attribut href d'une balise)
for elem in class_group2:
RelatedKeywords.append(elem.text) #Lien(attribut href d'une balise)
#Il n'y a qu'un seul "Suivant", mais j'ose chercher plusieurs par éléments. Une liste vide signifie la dernière page.
if driver.find_elements_by_id('pnnext') == []:
i = i_max + 1
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) #Passer à la page suivante
i = i + 1 #mettre à jour i
time.sleep(3) #Attendez 3 secondes
return title_list, link_list, summary_list, RelatedKeywords #Spécifiez une liste de titres et de liens comme valeur de retour
driver = webdriver.Chrome() #Préparer Chrome
#Ouvrir un exemple de HTML
driver.get('https://www.google.com/') #Ouvrez Google
i_max = 5 #Définissez le nombre de pages à analyser
search = driver.find_element_by_name('q') #Champ de recherche en HTML(name='q')Spécifier
search.send_keys('Automatisation du grattage"Python"') #Envoyer le mot de recherche
search.submit() #Effectuer une recherche
time.sleep(1.5) # 1.Attendez 5 secondes
#Exécutez la fonction de classement pour obtenir le titre et la liste des URL
title, link, summary, RelatedKeywords = ranking(driver)
csv_list = [["Classement", "Titre", "emballer", "Lien", "Mots clés associés"]]
for i in range(len(title)):
add_list=[i+1,title[i],summary[i],link[i]]
csv_list.append(add_list)
#Enregistrer la liste de titres au format csv
with open('Search_word.csv','w',encoding="utf-8_sig") as f:
writecsv = csv.writer(f, lineterminator='\n')
writecsv.writerows(csv_list)
driver.quit()
Au total, j'ai pu le créer en environ 4 heures. Je suis satisfait car je peux désormais faire fonctionner automatiquement le navigateur en utilisant du sélénium et également obtenir le titre. Vous pouvez l'utiliser lors de la rédaction d'un blog!
Préparez une liste CSV et créez un programme pour y lire les mots recherchés. Combinez avec le programme créé cette fois pour faciliter la recherche avec plusieurs mots de recherche. Il permet également de stocker des données à l'aide de feuilles de calcul.
Recommended Posts