Utilisation du module de requêtes de Python et de Beautiful Soup Les bases des bases du grattage
--Code pour obtenir et afficher tout le HTML de l'URL:
Obtenir du HTML
import requests
url = "https://hogehoge12345.html"
response = requests.get(url)
response.encoding = response.apparent_encoding
print(response.text)
-Utilisez `` requests.get () '' pour envoyer une requête HTTP à l'URL de l'argument et utilisez la réponse HTTP renvoyée par le serveur comme valeur de retour. -Utilisez apparent_encoding pour éviter autant que possible les caractères déformés. ・ Response.text est le contenu du contenu acquis ・ Si vous pouvez accéder par URL, vous pouvez également obtenir des fichiers CSV, des fichiers image, des fichiers vidéo, etc. (le code est le même que ci-dessus).
1 seconde d'intervalle
import time
time.sleep(1)
-Lors de l'acquisition successive de HTTP à partir de plusieurs URL, laissez un intervalle d'au moins 1 seconde afin de ne pas déranger le site de l'autre partie. ・ En premier lieu, il est nécessaire de confirmer les restrictions d'utilisation, par exemple si le site peut être consulté par programme ou si le contenu publié est converti en données.
Enregistrer le contenu Web récupéré dans un fichier
response = requests.get(url)
response.encoding = response.apparent_encoding
exam_html = response.text
with open('exam.html', mode='w', encoding='utf-8') as fp:
fp.write(exam_html)
python
import requests
from bs4 import BeautifulSoup
url = "https://hogehoge12345.html"
response = requests.get(url)
response.encoding = response.apparent_encoding
#Analyser le HTML
bs = BeautifulSoup(response.text, 'html.parser')
#Extraire la pièce délimitée par la balise ul
ul_tag = bs.find('ul')
#Extraire la balise a dans la balise ul
for a_tag in ul_tag.find_all('a'):
#Récupérer le texte de la balise a
text = a_tag.text # => "Cliquez pour accéder au lien"
#Récupère l'attribut href de la balise a
link_url = a_tag['href'] # => "https://hogehoge12345.html/next"
print('{}: {}'.format(text, link_url))
-Obtenir le code HTML de \
bs.find ('ul')
-La méthode find trace depuis le début et ne récupère que le premier élément, mais la méthode find_all récupère tous les éléments de manière itérative (= peut être utilisé pour les boucles for). Pour plus de détails, voir Link -252 /).
-Utiliser ** sélecteur CSS ** pour extraire des balises spécifiques (balises avec une certaine classe CSS, etc.)
-Exprimer en connectant les balises et les classes CSS avec des points <div class = "exam_exam1"> -> div.exam1
sélectionner la méthode
# div.Extraire la partie entourée d'exam1
div_exam1 = bs.select('div.exam1')
-Select () a la même fonction que find et find_all pour obtenir des éléments HTML et les renvoyer sous forme de liste, mais vous pouvez spécifier des sélecteurs CSS dans les conditions de recherche (pour plus de détails, lien. blog / difference-find-and-select-in-beautiful-soup-of-python /)).
Recommended Posts