ページからすべてのリンクを取得するために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リンクのリストを取得するにはどうすればよいですか?
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
最後の行を置き換えます。
links = soup.find_all('a')
その行で:
links = [a.get('href') for a in soup.find_all('a', href=True)]
すべてのa
タグを廃棄し、a
タグごとにhref
属性をリンクリストに追加します。
[]
間のforループについて詳しく知りたい場合は、 List comprehensions をお読みください。
タグの使用に関係なくevery href
のリストを取得するには:
href_tags = soup.find_all(href=True)
hrefs = [tag.get('href') for tag in href_tags]