2017-09-29 13 views
0

J'utilise beautifulsoup pour obtenir tous les liens d'une page. Mon code est:Obtenir tous les liens d'une page Belle soupe

import requests 
from bs4 import BeautifulSoup 


url = 'http://www.acontecaeventos.com.br/marketing-promocional-sao-paulo' 
r = requests.get(url) 
html_content = r.text 
soup = BeautifulSoup(html_content, 'lxml') 

soup.find_all('href') 

Tout ce que je reçois est:

[] 

Comment puis-je obtenir une liste de tous les liens href sur cette page?

Répondre

2

Vous dites la find_all méthode pour trouver href étiquettes, pas attributs.

Vous devez trouver les balises <a>, elles sont utilisées pour représenter les éléments de lien.

links = soup.find_all('a') 

Plus tard, vous pouvez accéder à leurs href attributs comme ceci:

link = links[0]   # get the first link in the entire page 
url = link['href']  # get value of the href attribute 
url = link.get('href') # or like this 
+0

Mais quand je fais cela, je viens d'obtenir le premier lien: http://www.acontecaeventos.com.br/ Dois-je faire une boucle for et les obtenir tous? – user1922364

+0

'links = soup.find_all ('a')' vous donne une liste de tous les liens. J'ai utilisé le premier lien comme exemple dans le code du bas de la réponse. Et oui boucle sur la liste 'links' pour accéder à tous les liens trouvés. – Anonta

0

Remplacez votre dernière ligne:

links = soup.find_all('a') 

par cette ligne:

links = [a.get('href') for a in soup.find_all('a', href=True)] 

Il abolira tous les a et pour chaque balise a, l'attribut href sera ajouté à la liste des liens.

Si vous voulez en savoir plus sur la boucle for entre les [], consultez environ List comprehensions.