Da ich über das Obige nachgedacht habe, habe ich so einen kleinen Code geschrieben, also werde ich ihn teilen. (Diesmal wird davon ausgegangen, dass der Name des Handles bekannt ist.)
Was das Schaben betrifft, muss ich grundsätzlich verschiedene Regeln befolgen. Lesen Sie hier
Bitte seien Sie bei der Ausführung sehr vorsichtig, da dies zur Belastung des Servers des anderen Teilnehmers führen kann.
Ordnen Sie die Handle-Namen in der ersten Zeile von Excel an ↓ Informationen aus Excel abrufen ↓ Googeln ↓ Extrahieren Sie Informationen (Kontoname) daraus ↓ Listen Sie die Kontonamen in der dritten Spalte von Excel auf
Ich werde es so machen.
4 Module zu verwenden
Ich habe in meiner lokalen Umgebung unter Dokumente ein Scraype-Verzeichnis erstellt.
Lassen Sie uns 4 sofort mit dem obigen Pip installieren.
pip3 install requests
pip3 install openpyxl
pip3 install BeautifulSoup4
pip3 install time
Und in die gerade erstellte Datei importieren
handle_name-search.py
import requests
import openpyxl
from bs4 import BeautfulSoup as bs
import time
Nehmen Sie die obigen Einstellungen vor, speichern Sie sie als handle.xlsx und speichern Sie sie im Scraype-Ordner.
Verwenden Sie das openpyxl-Modul, um Dateien in die lokale Umgebung zu laden und Sheet1 zu betreiben
handle_name_search.py
wb = openpyxl.laod_workbook('/Users/{Mein Einheimischer}/Documents/scraype/handle.xlsx')
sheet1=wb['Sheet1']
Damit ist die Einstellung von Sheet1 abgeschlossen. Nehmen wir also alle A1-Spalten.
handle_name_search.py
for i in range(0,sheet1.max_row):
print(sheet1.cell(row=i+1,column=1).value
In diesem Fall werden alle Informationen in Spalte A1 aus Excel ausgegeben! Dann suchen Sie danach!
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
Der Inhalt, mit dem ich hier zu kämpfen hatte, ist, dass der Klassenname, der bei der Überprüfung von Chrome angezeigt wird, und die von bs4 erworbene Klasse unterschiedlich sind. Daher ist inoup.prettify () der Titel der Google-Suche in der Klasse von BNeawe vvjwJb AP7 Wnd enthalten Bestätigung.
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/{Ihr lokaler Name}/Documents/scraype/handle.xlsx')
handle_name_search.py
import requests
import openpyxl
from bs4 import BeautifulSoup as bs
import time
##Lokales Handle.Greifen Sie auf xlsx zu (geben Sie den Handle-Namen in die erste Spalte ein).)
wb = openpyxl.load_workbook('/Users/{Ihr lokaler Name}/Documents/scraype/handle.xlsx')
sheet1=wb['Sheet1']
##Holen Sie sich das Handle der ersten Excel-Spalte und geben Sie es in der dritten Spalte aus
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/{Ihr lokaler Name}/Documents/scraype/handle.xlsx')
wb.save('/Users/{Ihr lokaler Name}/Documents/scraype/handle.xlsx')
Danach kompilieren und überprüfen Sie es bitte. Wird der Kontoname in der dritten Spalte ausgegeben? ??
Wir haben eine Sleep-Funktion in der Mitte eingeführt, um einen Serverangriff zu verhindern. Beachten Sie jedoch unbedingt die Regeln, wenn Sie Scraping ausführen.
Das kratzte.
Recommended Posts