Die Erklärung der folgenden Personen war leicht zu verstehen. Referenz: Scraping mit Python (1) Einführung | Lassen Sie uns Daten automatisch mithilfe von Scraping extrahieren
Ich verstehe den Fluss des Web Scraping. Als nächstes möchte ich den Code so ändern, dass Informationen von mehreren Sites abgerufen werden können.
import requests
from bs4 import BeautifulSoup
html_doc = requests.get("https://www.yahoo.co.jp/").text #Holen Sie sich HTML für Yahoo-Site
soup = BeautifulSoup(html_doc, 'html.parser') #Schöne Suppeninitialisierung
print(soup.prettify()) #HTML einrücken, um das Lesen zu erleichtern.
#Titel holen
title = soup.title.text
print(title)
#Referenz)
# Python,Verwendung von Anfragen
# https://note.nkmk.me/python-requests-usage/
#
#Antwortobjekt
# url:URL-Attribut
#Statuscode: status_Code-Attribut
#Codierung:Kodierungsattribut
#Antwortheader:Header-Attribut
#Text:Textattribut
#Binärdaten:Inhaltsattribut
#Beschreibung abrufen
meta_description = soup.find('meta', {'name' : 'description'})
description = meta_description['content']
print(description)
#Beim Abrufen mehrerer Tags
tags = soup.find_all("a")
print(tags)
##Ergebnis
[<a class="yMWCYupQNdgppL-NV6sMi _3sAlKGsIBCxTUbNi86oSjt" data-ylk="slk:help;pos:0" href="https://www.yahoo-help.jp/">Hilfe</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="Übergang zur Prämie" 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">Prämie</span><span class="_2Uq6Pw5lfFfxr_OD36xHp6 _3JuM5k4sY_MJiSvJYtVLd_ Y8gFtzzcdGMdFngRO9qFV" style="width:36px;height:38px"></span></p></a>,
<a aria-label="Übergang zur Karte" 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">Karte</span><span class="_2Uq6Pw5lfFfxr_OD36xHp6 _3JuM5k4sY_MJiSvJYtVLd_ _1MaEI7rEHB4FpQ1MwfWxIK" style="width:36px;height:38px"></span></p></a>,
<a aria-label="Übergang zur Post" 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>,
...]
#Holen Sie sich den Text und den Link des erhaltenen Tags
for tag in tags:
print (tag.string)
print (tag.get("href"))
##Ergebnis
Hilfe
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)
#Fügen Sie dem Datenrahmen den Artikelnamen und die Artikel-URL hinzu
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.Ausgabe an CSV mit dem Namen csv
filename = "result.csv"
df.to_csv(filename, encoding = 'utf-8-sig', index=False)
files.download(filename)
#Referenz)
#Exportieren / Hinzufügen einer CSV-Datei mit Pandas (zu_csv)
# https://note.nkmk.me/python-pandas-to-csv/
Recommended Posts