Dies ist eine Fortsetzung des Artikels [Für Anfänger] Versuchen Sie Web-Scraping mit Python. Letztes Mal Nikkei Business Electronic Version https://business.nikkei.com/ Ich habe die Überschrift und URL des neuen Artikels von erhalten.
Dies allein können Sie jedoch herausfinden, indem Sie tatsächlich auf diese URL zugreifen.
Wenn Sie beim Durchsuchen der Nachrichtenseite Nachrichten finden, die Sie interessieren, klicken Sie darauf, um die Details anzuzeigen. Nikkei Business-Artikel, obwohl nicht alle Nachrichten, enthalten eine Artikeleinführung mit etwa 150 Zeichen, die Sie dazu bringt, vor dem Inhalt zu lesen. Wenn Sie diesen Inhalt zusammen anzeigen, können Sie ihn als Grundlage für die Entscheidung verwenden, ob Sie den Artikel lesen möchten oder nicht. Es ist schwierig, nacheinander auf alle Artikel zuzugreifen und den Einführungstext der Artikel zu lesen. Wir werden die Güte des Web-Scrapings hervorheben.
code.py
import requests
from bs4 import BeautifulSoup
import re
urlName = "https://business.nikkei.com"
url = requests.get(urlName)
soup = BeautifulSoup(url.content, "html.parser")
elems = soup.find_all("span")
for elem in elems:
try:
string = elem.get("class").pop(0)
if string in "category":
print(elem.string)
title = elem.find_next_sibling("h3")
print(title.text.replace('\n',''))
r = elem.find_previous('a')
#Ich erhalte die URL des Artikels
print(urlName + r.get('href'), '\n')
#Schreiben Sie ein Programm, um den Artikeleinführungstext des URL-Ziels in diesem Teil abzurufen
except:
pass
Weitere Informationen finden Sie im vorherigen Artikel. Als ich auf die Nachrichten klickte, wurde die Übergangs-URL angezeigt und das letzte Mal war vorbei. Greifen Sie diesmal auf diese URL zu, um den Inhalt abzurufen.
Zunächst werden wir die Anfragen und BeautifulSoup-Teile in Funktionen umwandeln.
subFunc.py
import requests
from bs4 import BeautifulSoup
def setup(url):
url = requests.get(url)
soup = BeautifulSoup(url.content, "html.parser")
return url, soup
main.py
import re
import subFunc
urlName = "https://business.nikkei.com"
url, soup = subFunc.setup(urlName)
elems= soup.find_all("span")
for elem in elems:
try:
string = elem.get("class").pop(0)
if string in "category":
print('\n', elem.string)
title = elem.find_next_sibling("h3")
print(title.text.replace('\n',''))
r = elem.find_previous('a')
nextPage = urlName + r.get('href')
print(nextPage)
#Neu geschriebener Teil von hier
nextUrl, nextSoup = subFunc.setup(nextPage)
abst = nextSoup.find('p', class_="bplead")
if len(abst) != 0:
print(abst.get_text().replace('\n',''))
except:
pass
Um ehrlich zu sein, ist das, was ich tue, dasselbe. Erhalten Sie Informationen über die Ziel-URL mithilfe von Anfragen und Beautiful Soup. Im Einführungstext des Artikels befand sich die Klasse im Element bplead. Einige Artikel haben jedoch keinen Einführungstext, daher habe ich versucht, sie anzuzeigen, wenn dies der Fall ist.
Das Ausführungsergebnis ist wie folgt. (Weggelassen)
Mitgestaltung / Wettbewerb / Startup
Die neue Korona ist eine Langzeitschlacht xxxxxxxxxxx
https://business.nikkei.com/atcl/gen/19/00101/040100009/
Er klagte über eine neue Koronavirus-Epidemie xxxxxxxxxxxx.
Als ich nachgeschlagen habe, wurden einige andere Methoden eingeführt, aber ich habe versucht, den Inhalt des Übergangsziels mit einer einfachen Methode abzurufen.
Recommended Posts