Ceci est un article pour les débutants du web scraping utilisant Python 3 et Beautiful Soup 4.
J'ai fait référence à des articles précédents, Puisqu'un avertissement était affiché ou qu'il ne fonctionnait pas en raison de la différence de version, j'ai essayé de le résumer à nouveau.
Le processus de base du scraping Web est le suivant.
① Obtenez la page Web. (2) Divisez les éléments de la page acquise et extrayez n'importe quelle partie. ③ Enregistrez dans la base de données.
Utilisez request pour obtenir la page Web de ① et BeautifulSoup4 à traiter ②. Étant donné que ③ diffère selon l'environnement, l'explication est omise dans cet article.
Après avoir installé Python3 Utilisez la commande pip pour installer les trois packages BeautifulSoup4, requests et lxml.
$ pip install requests
$ pip install lxml
$ pip install beautifulsoup4
Créez le fichier de script suivant.
sample.py
import requests
from bs4 import BeautifulSoup
target_url = 'http://example.co.jp' #example.co.jp est un domaine fictif. Changer pour n'importe quelle URL
r = requests.get(target_url) #Obtenez du Web à l'aide de demandes
soup = BeautifulSoup(r.text, 'lxml') #Extraire des éléments
for a in soup.find_all('a'):
print(a.get('href')) #Afficher le lien
Démarrez une invite de commande et exécutez la commande suivante.
$ python sample.py
Après exécution, si le lien de la page est affiché sur la console, c'est réussi!
Voici quelques méthodes utiles pour BeautifulSoup.
soup.a.string #Changer la chaîne de caractères de la balise a
soup.a.attrs #Changer tous les attributs
soup.a.parent #L'élément parent renvoie
soup.find('a') #Le premier élément est retourné
soup.find_all(id='log') #Tous les éléments sont retournés
soup.select('head > title') #Spécifié par le sélecteur css
BeautifulSoup a de nombreuses autres méthodes que vous pouvez utiliser. Pour plus de détails, veuillez vous référer au document officiel. https://www.crummy.com/software/BeautifulSoup/bs4/doc/
Il est pratique d'utiliser l'expression régulière de re pour affiner l'élément cible.
import re
soup.find_all('a', href=re.compile("^http")) #Liens commençant par http
import re
soup.find_all('a', href=re.compile("^(?!http)")) #Ne commence pas par http(le déni)
import re
soup.find_all('a', text=re.compile("N"), title=re.compile("W")) #Éléments où le texte contient N et le titre contient W
Il complète les opérations de chaîne qu'il est utile de retenir lors du scraping.
" abc ".strip()
→abc
"a, b, c,".split(',')
→[a, b, c]
"abcde".find('c') #Renvoie la position s'il y a un caractère spécifié.
→2
"abcdc".replace('c', 'x')
→abxdx
http://qiita.com/itkr/items/513318a9b5b92bd56185
Recommended Posts