Dies ist ein Artikel für Anfänger des Web Scraping mit Python 3 und Beautiful Soup 4.
Ich bezog mich auf frühere Artikel, Da eine Warnung angezeigt wurde oder aufgrund des unterschiedlichen Versions nicht funktionierte, habe ich versucht, sie erneut zusammenzufassen.
Der grundlegende Prozess des Web Scraping ist wie folgt.
① Holen Sie sich die Webseite. (2) Teilen Sie die Elemente der erfassten Seite und extrahieren Sie einen beliebigen Teil. ③ In der Datenbank speichern.
Verwenden Sie request, um die Webseite von ① und BeautifulSoup4 zum Verarbeiten von ② zu erhalten. Da ③ je nach Umgebung unterschiedlich ist, wird die Erklärung in diesem Artikel weggelassen.
Nach der Installation von Python3 Verwenden Sie den Befehl pip, um die drei Pakete BeautifulSoup4, request und lxml zu installieren.
$ pip install requests
$ pip install lxml
$ pip install beautifulsoup4
Erstellen Sie die folgende Skriptdatei.
sample.py
import requests
from bs4 import BeautifulSoup
target_url = 'http://example.co.jp' #example.co.jp ist eine fiktive Domain. Wechseln Sie zu einer beliebigen URL
r = requests.get(target_url) #Holen Sie sich aus dem Web mit Anfragen
soup = BeautifulSoup(r.text, 'lxml') #Elemente extrahieren
for a in soup.find_all('a'):
print(a.get('href')) #Link anzeigen
Starten Sie eine Eingabeaufforderung und führen Sie den folgenden Befehl aus.
$ python sample.py
Wenn der Seitenlink nach der Ausführung auf der Konsole angezeigt wird, ist er erfolgreich!
Hier sind einige nützliche Methoden für BeautifulSoup.
soup.a.string #Ändern Sie die Zeichenfolge des a-Tags
soup.a.attrs #Ändern Sie alle Attribute
soup.a.parent #Übergeordnetes Element wird zurückgegeben
soup.find('a') #Das erste Element wird zurückgegeben
soup.find_all(id='log') #Alle Elemente werden zurückgegeben
soup.select('head > title') #Wird vom CSS-Selektor angegeben
BeautifulSoup bietet viele andere Methoden, die Sie verwenden können. Einzelheiten entnehmen Sie bitte dem offiziellen Dokument. https://www.crummy.com/software/BeautifulSoup/bs4/doc/
Es ist zweckmäßig, den regulären Ausdruck von re zu verwenden, um das Zielelement einzugrenzen.
import re
soup.find_all('a', href=re.compile("^http")) #Links, die mit http beginnen
import re
soup.find_all('a', href=re.compile("^(?!http)")) #Beginnt nicht mit http(Verweigerung)
import re
soup.find_all('a', text=re.compile("N"), title=re.compile("W")) #Elemente, bei denen Text N und Titel W enthält
Es ergänzt die Zeichenfolgenoperationen, die beim Scraping hilfreich sind.
" abc ".strip()
→abc
"a, b, c,".split(',')
→[a, b, c]
"abcde".find('c') #Gibt die Position zurück, wenn ein bestimmtes Zeichen vorhanden ist.
→2
"abcdc".replace('c', 'x')
→abxdx
http://qiita.com/itkr/items/513318a9b5b92bd56185
Recommended Posts