L'explication des personnes suivantes était facile à comprendre. Référence: Scraping with Python (1) Introduction | Extrayons automatiquement les données en utilisant le scraping
Je comprends le flux du web scraping. Ensuite, je voudrais modifier le code afin que les informations puissent être obtenues à partir de plusieurs sites.
import requests
from bs4 import BeautifulSoup
html_doc = requests.get("https://www.yahoo.co.jp/").text #Obtenir du HTML pour le site Yahoo
soup = BeautifulSoup(html_doc, 'html.parser') #Belle initialisation de soupe
print(soup.prettify()) #Mettez du HTML en retrait pour faciliter la lecture.
#Obtenir le titre
title = soup.title.text
print(title)
#référence)
# Python,Comment utiliser les requêtes
# https://note.nkmk.me/python-requests-usage/
#
#Objet de réponse
# url:attribut url
#Code d'état: status_attribut de code
#codage:attribut d'encodage
#En-tête de réponse:attribut headers
#texte:attribut de texte
#Données binaires:attribut de contenu
#Obtenir la description
meta_description = soup.find('meta', {'name' : 'description'})
description = meta_description['content']
print(description)
#Lors de l'obtention de plusieurs balises
tags = soup.find_all("a")
print(tags)
##résultat
[<a class="yMWCYupQNdgppL-NV6sMi _3sAlKGsIBCxTUbNi86oSjt" data-ylk="slk:help;pos:0" href="https://www.yahoo-help.jp/">Aidez-moi</a>,
<a class="yMWCYupQNdgppL-NV6sMi _3sAlKGsIBCxTUbNi86oSjt" data-ylk="rsec:header;slk:logo;pos:0" href="https://www.yahoo.co.jp">Yahoo! JAPAN</a>,
<a aria-label="Transition vers la prime" class="yMWCYupQNdgppL-NV6sMi _3sAlKGsIBCxTUbNi86oSjt" data-ylk="rsec:header;slk:premium;pos:0" href="https://premium.yahoo.co.jp/"><p class="oLvk9L5Yk-9JOuzi-OHW5"><span class="t_jb9bKlgIcajcRS2hZAP">prime</span><span class="_2Uq6Pw5lfFfxr_OD36xHp6 _3JuM5k4sY_MJiSvJYtVLd_ Y8gFtzzcdGMdFngRO9qFV" style="width:36px;height:38px"></span></p></a>,
<a aria-label="Transition vers la carte" class="yMWCYupQNdgppL-NV6sMi _3sAlKGsIBCxTUbNi86oSjt" data-ylk="rsec:header;slk:card;pos:0" href="https://card.yahoo.co.jp/service/redirect/top/"><p class="oLvk9L5Yk-9JOuzi-OHW5"><span class="t_jb9bKlgIcajcRS2hZAP">carte</span><span class="_2Uq6Pw5lfFfxr_OD36xHp6 _3JuM5k4sY_MJiSvJYtVLd_ _1MaEI7rEHB4FpQ1MwfWxIK" style="width:36px;height:38px"></span></p></a>,
<a aria-label="Transition vers le courrier" class="yMWCYupQNdgppL-NV6sMi _3sAlKGsIBCxTUbNi86oSjt" data-ylk="rsec:header;slk:mail;pos:0" href="https://mail.yahoo.co.jp/"><p class="oLvk9L5Yk-9JOuzi-OHW5"><span class="t_jb9bKlgIcajcRS2hZAP">Email</span><span class="_2Uq6Pw5lfFfxr_OD36xHp6 _3JuM5k4sY_MJiSvJYtVLd_ _3Qi5P0lTFbNkWishPzz8tb" style="width:36px;height:38px"></span></p></a>,
...]
#Obtenez le texte et le lien de la balise obtenue
for tag in tags:
print (tag.string)
print (tag.get("href"))
##résultat
Aidez-moi
https://www.yahoo-help.jp/
Yahoo! JAPAN
https://www.yahoo.co.jp
None
https://premium.yahoo.co.jp/
...
import pandas as pd
from google.colab import files
columns = ["name", "url"]
df = pd.DataFrame(columns=columns)
#Ajouter le nom de l'article et l'URL de l'article au bloc de données
for tag in tags:
name = tag.string
url = tag.get("href")
se = pd.Series([name, url], columns)
print(se)
df = df.append(se, columns)
# result.Sortie au format CSV avec le nom csv
filename = "result.csv"
df.to_csv(filename, encoding = 'utf-8-sig', index=False)
files.download(filename)
#référence)
#Exporter / ajouter un fichier csv avec pandas (vers_csv)
# https://note.nkmk.me/python-pandas-to-csv/
Recommended Posts