[PYTHON] Gratter avec une belle soupe

Environnement Mac, Python3

Préparation préalable

Installez Beautiful Soup et lxml

$ pip install beautifulsoup4
$ pip install lxml

J'ai eu une erreur en cours de route, mais l'installation a réussi. Il n'y a pas de problèmes pour l'instant.

Forme de base de soupe

from bs4 import BeautifulSoup
import urllib.request

#Lorsque vous obtenez du code HTML à partir du Web
url = '××××××××××××'
req = urllib.request.Request(url)
response = urllib.request.urlopen(req)
html = response.read()
soup = BeautifulSoup(html, "lxml")
#Lors de l'ouverture directe du HTML local
soup = BeautifulSoup(open("index.html"), "lxml")

Que faire à partir de maintenant

Obtenez l'élément en spécifiant la balise contenant les informations souhaitées.

Méthode de spécification fréquemment utilisée


-Spécifiez la classe
   soup.find(class_='class_name')
   #S'il n'y a pas de trait de soulignement après la classe, une erreur se produit.
-Spécifiez l'identifiant
   soup.find(id="id_name")
   #L'identifiant reste le même.
-Spécifiez la balise ensemble
   soup.find('li', class_='class_name')
   soup.find('div', id="id_name")

find () n'obtiendra que le premier coup. Si vous voulez en obtenir plusieurs, utilisez find_all ().

images = soup.find_all('img')
  for img in images:
    ~Traitement individuel~
soup.select("p > a")
soup.select('a[href="http://example.com/"]')

Échantillon d'exécution

C'est un échantillon après avoir chargé le HTML dans la soupe.

Exemple 1: obtenir le texte entre les balises

sample.html


<html>
  <title>test title</title>
</html>
>>> soup.title
<title>test title</title>
>>> soup.title.string
'test title'

Vous pouvez l'obtenir en ajoutant .string à la fin.

Exemple 2: Extraire le src de la balise img

sample.html


<html>
  <div id="hoge">
    <img class="fuga" src="http://××.com/sample.jpg "/>
  </div>
</html>

Tout d'abord, récupérez la balise div avec id = "hoge"

>>> div = soup.find('div' id="hoge")
<div id="hoge">
  <img class="fuga" src="http://××.com/sample.jpg "/>
</div>

Ensuite, récupérez la balise img de class = "fuga" de la div

>>> img = div.find('img', class_='fuga')
<img class="fuga" src="http://××.com/sample.jpg "/>
>>> img['src']
"http://××.com/sample.jpg "

Vous n'avez pas vraiment besoin d'obtenir un div avec ce modèle. Cependant, je voulais faire un échantillon qui se rétrécit, alors j'ai ajouté un div.

référence http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-beautiful-soup

Recommended Posts

Gratter avec une belle soupe
Grattage de table avec belle soupe
Essayez de gratter avec Python + Beautiful Soup
Racler plusieurs pages avec Beautiful Soup
Grattage avec Python et belle soupe
Gratter avec une belle soupe en 10 minutes
Grattage de site Web avec Beautiful Soup en Python
Belle soupe
Pratique de l'exploration avec Beautiful Soup
Grattage au sélénium
Grattage au sélénium ~ 2 ~
Grattage avec Python
Grattage avec Python
Belle note de soupe
Grattage avec du sélénium
[Python] Gratter une table avec Beautiful Soup
Supprimez les balises HTML indésirables avec Beautiful Soup
Grattage réussi avec Selenium
Grattage en Python (préparation)
Essayez de gratter avec Python.
Grattage avec Python + PhantomJS
Ma belle soupe (Python)
Triez les visages d'anime en grattant les pages de personnages d'anime avec Beautiful Soup et Selenium
Écrivez un "bot" de scraping web sans tête de base en Python avec Beautiful Soup 4
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Scraping RSS avec Python
[Python] Supprimer en spécifiant une balise avec Beautiful Soup
J'ai essayé de gratter avec Python
Télécharger automatiquement des images avec grattage
Web scraping avec python + JupyterLab
Grattage avec Selenium + Python Partie 1
Grattage avec chromedriver en python
Grattage festif avec Python, scrapy
Enregistrez des images avec le web scraping
Grattage avec du sélénium en Python
Grattage Web facile avec Scrapy
Grattage avec Tor en Python
Gratter la moyenne du Nikkei avec le dramaturge-python
Grattage avec Selenium + Python Partie 2
J'ai essayé différentes choses avec Python: le grattage (Beautiful Soup + Selenium + PhantomJS) et l'analyse morphologique
Web scraping débutant avec python
Gratter la page i-town avec du sélénium
Gratter les résultats de recherche de Google Actualités en Python (2) Utiliser Beautiful Soup
Un mémorandum lors de l'utilisation d'une belle soupe
Scraping avec Node, Ruby et Python
Scraping avec Selenium en Python (Basic)
Grattage WEB avec BeautifulSoup4 (page en couches)
Grattage avec Python, Selenium et Chromedriver
Gratter le classement Web d'Alexa avec pyQuery
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
Dessinez un beau cercle avec numpy
Faisons du scraping d'images avec Python
Obtenez les tendances Qiita avec le scraping Python
Obtenez l'URL de destination du lien en spécifiant la phrase de texte avec le grattage Python (Beautiful Soup) + XPath
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Grattage 1