Ceci est une suite de l'article [Pour les débutants] Essayez le Web scraping avec Python. Dernière fois, Nikkei Business Electronic Version https://business.nikkei.com/ J'ai obtenu le titre et l'URL du nouvel article de.
Cependant, avec cela seul, vous pouvez le savoir en accédant réellement à cette URL.
Lorsque vous parcourez le site d'actualités, si vous trouvez des actualités qui vous intéressent, cliquez dessus pour voir les détails. Les articles Nikkei Business, mais pas toutes les actualités, ont une introduction d'article d'environ 150 caractères qui donne envie de lire avant le contenu. En affichant ce contenu ensemble, vous pouvez l'utiliser comme base pour décider de lire l'article ou non. Il est difficile d'accéder à tous les articles un par un et de lire le texte d'introduction des articles. Nous ferons ressortir les bienfaits du scraping Web.
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')
#J'obtiens l'URL de l'article
print(urlName + r.get('href'), '\n')
#Écrivez un programme pour obtenir le texte d'introduction de l'article de la destination URL dans cette partie
except:
pass
Pour plus d'informations, consultez l'article précédent. Lorsque j'ai cliqué sur l'actualité, l'URL de transition était affichée et la dernière fois était terminée. Cette fois, accédez à cette URL pour obtenir le contenu.
Tout d'abord, cette fois, nous allons transformer les requêtes et les parties BeautifulSoup en fonctions.
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)
#Partie nouvellement écrite d'ici
nextUrl, nextSoup = subFunc.setup(nextPage)
abst = nextSoup.find('p', class_="bplead")
if len(abst) != 0:
print(abst.get_text().replace('\n',''))
except:
pass
Pour être honnête, ce que je fais est pareil. Obtenez des informations sur l'URL de destination à l'aide de requêtes et de Beautiful Soup. Dans le texte d'introduction de l'article, la classe était dans l'élément de bplead. Cependant, certains articles n'ont pas de texte d'introduction, j'ai donc essayé de les afficher s'ils le faisaient.
Le résultat de l'exécution est le suivant. (Omis)
Co-création / compétition / startup
La nouvelle couronne est une bataille à long terme xxxxxxxxxxx
https://business.nikkei.com/atcl/gen/19/00101/040100009/
Il s'est plaint d'une nouvelle épidémie de virus corona xxxxxxxxxxxx.
Quand je l'ai recherché, d'autres méthodes ont été introduites, mais j'ai essayé d'obtenir le contenu de la destination de transition avec une méthode simple.
Recommended Posts