J'ai quelques problèmes avec l'extraction des balises d'un site Web :

r = req.get(web+"?pg=news&tf=G&page={}/".format(num))

soup = BeautifulSoup(r.content, 'html.parser')
results = [
    (
        x.select_one("h3.d-flex").text,
        x.select_one("div.i").text,
        x.select_one("div.a").a.text,
        x.select_one("div.entry-content").p.text,
    ) for x in soup.findAll("section")
]

J'ai besoin de récupérer des informations pertinentes telles que les titres, l'aperçu du contenu, la date et le lien. Lorsque j'imprime les balises ci-dessus, j'obtiens des listes vides. Comme je n'ai pas beaucoup d'expérience dans la sélection de balises et que je ne suis pas sûr des classes que j'ai sélectionnées ci-dessus, je vous demanderais si vous pouviez jeter un coup d'œil et me dire laquelle (s) est fausse.

0
user14289862 17 nov. 2020 à 05:55

1 réponse

Meilleure réponse

J'espère que ce code vous aidera. assumer l'url http://gentedellarete.it/?pg=news&tf=G&page=1

import requests
from bs4 import BeautifulSoup

URL = "https://www.centrepointstores.com/sa/en/Women/Fashion-Accessories/Watches/CENTREPOINT-Citizen-Women%27s-Rose-Gold-Analog-Metal-Strap-Watch-EU-6039-86A/p/EU603986AGold"
HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
}
r = requests.get("http://www.gentedellarete.it/?pg=news&tf=G&page={}/".format(1), headers=HEADERS)
soup = BeautifulSoup(r.content, 'html.parser')

for x in soup.findAll('div', {'class',"text py-5 pl-md-5"}):
    print('\n',x.select_one("div > a:nth-child(2) h3").text, sep='\n') #heading ok
    print('\n', x.select_one('p').text) #under h3 ok
    print('\n', x.select('p')[1].text) # body ok
    print('\n', x.select('p')[1].text.split('(')[1].strip(')')) # date ok?
0
Samsul Islam 17 nov. 2020 à 06:25