web-dev-qa-db-ja.com

ページからすべてのリンクを取得するBeautiful Soup

ページからすべてのリンクを取得するためにbeautifulsoupを使用しています。私のコードは:

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')

私が得るすべては:

[]

そのページのすべてのhrefリンクのリストを取得するにはどうすればよいですか?

11
user1922364

find_allメソッドにhrefタグ、not属性を検索するように指示しています。

<a>タグを見つける必要があります。これらのタグはリンク要素を表すために使用されます。

links = soup.find_all('a')

後で、次のようにhref属性にアクセスできます。

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
13
Anonta

最後の行を置き換えます。

links = soup.find_all('a')

その行で:

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

すべてのaタグを廃棄し、aタグごとにhref属性をリンクリストに追加します。

[]間のforループについて詳しく知りたい場合は、 List comprehensions をお読みください。

9
wbwlkr

タグの使用に関係なくevery hrefのリストを取得するには:

href_tags = soup.find_all(href=True)   
hrefs = [tag.get('href') for tag in href_tags]
0
Oliver Oliver