Parce que j'ai pensé à ce qui précède, j'ai écrit un petit code comme ça et je vais le partager. (Cette fois, on suppose que le nom du handle est connu)
En ce qui concerne le grattage, vous devez essentiellement suivre diverses règles. Lire ici
Soyez très prudent lors de son exécution car cela peut entraîner une charge sur le serveur de l'autre partie.
Réorganisez les noms des poignées dans la première ligne d'Excel ↓ Obtenir des informations d'Excel ↓ Recherche sur Google ↓ Extraire les informations (nom du compte) de celui-ci ↓ Répertoriez les noms de compte dans la troisième colonne d'Excel
Je vais le faire de cette façon.
4 modules à utiliser
J'ai créé un répertoire scraype dans Documents dans mon environnement local.
Installons 4 immédiatement en utilisant le pip ci-dessus.
pip3 install requests
pip3 install openpyxl
pip3 install BeautifulSoup4
pip3 install time
Et importez dans le fichier que vous venez de créer
handle_name-search.py
import requests
import openpyxl
from bs4 import BeautfulSoup as bs
import time
Définissez les paramètres ci-dessus, enregistrez-le sous le nom handle.xlsx et enregistrez-le dans le dossier scraype.
Utilisez le module openpyxl pour charger des fichiers dans l'environnement local et utiliser Sheet1
handle_name_search.py
wb = openpyxl.laod_workbook('/Users/{Mon local}/Documents/scraype/handle.xlsx')
sheet1=wb['Sheet1']
Ceci termine le réglage de Sheet1, prenons donc toutes les colonnes A1.
handle_name_search.py
for i in range(0,sheet1.max_row):
print(sheet1.cell(row=i+1,column=1).value
Si vous faites cela, toutes les informations de la colonne A1 seront sorties d'Excel! Alors cherchez ça!
handle_name_search.py
req = requests.get("https//www.google.com/search?q=" + sheet1.cell(row = i+1, column=1).value)
handle_name_search.py
req = req.text
soup = bs(req,"html.parser")
tags = soup.find_all("div",class_="ZINbbc xpd O9g5cc uUPGi")
if(tags[0].find("div",class_="BNeawe vvjwJb AP7Wnd") != None):
title = tags[0].find("div",class_="BNeawe vvjwJb AP7Wnd").string
Le contenu avec lequel j'ai eu du mal ici est que le nom de classe vu dans la vérification de chrome et la classe acquise par bs4 sont différents, donc dans soup.prettify (), le titre de recherche de google est inclus dans la classe de BNeawe vvjwJb AP7Wnd. Vérification.
handle_name_search.py
if "(@" in title:
title = title.split('(@')[0]
else:
if "- Twitter" in title:
title = title.split('-')[0]
if "✓" in title:
title = title.split('✓')[0]
handle_name_searchpy
sheet1.cell(row=i+1,column=3).value = title
wb.save('/Users/{Votre nom local}/Documents/scraype/handle.xlsx')
handle_name_search.py
import requests
import openpyxl
from bs4 import BeautifulSoup as bs
import time
##Poignée locale.Accédez à xlsx (entrez le nom du descripteur dans la première colonne))
wb = openpyxl.load_workbook('/Users/{Votre nom local}/Documents/scraype/handle.xlsx')
sheet1=wb['Sheet1']
##Obtenez le handle de la première colonne d'Excel et affichez-le dans la troisième colonne
for i in range(0,sheet1.max_row):
time.sleep(1)
print(sheet1.cell(row=i+1,column=1).value)
req = requests.get("https://www.google.com/search?q=" + sheet1.cell(row=i+1,column=1).value)
req = req.text
soup = bs(req,"html.parser")
tags = soup.find_all("div", class_="ZINbbc xpd O9g5cc uUPGi")
if(tags[0].find("div",class_="BNeawe vvjwJb AP7Wnd") != None):
title = tags[0].find("div", class_="BNeawe vvjwJb AP7Wnd").string
if "(@" in title:
title = title.split('(@')[0]
else:
if "- Twitter" in title:
title = title.split('-')[0]
if "✓" in title:
title = title.split('✓')[0]
print(title)
sheet1.cell(row=i+1,column=3).value= title
wb.save('/Users/{Votre nom local}/Documents/scraype/handle.xlsx')
wb.save('/Users/{Votre nom local}/Documents/scraype/handle.xlsx')
Après cela, veuillez le compiler et le vérifier. Le nom du compte a-t-il été affiché dans la troisième colonne? ??
Nous avons introduit une fonction de veille pour empêcher une attaque de serveur, mais assurez-vous de suivre les règles lors du scraping.
C'était grattant.
Recommended Posts