用不同的方法使用美丽的汤来获取href

1 python beautifulsoup keyerror

我正在尝试抓取一个网站。我学会了从两种资源中抓取:一种用于tag.get('href')a标签中获取 href ,另一种用于tag['href']获取相同的内容。据我了解,他们都做同样的事情。但是当我尝试这段代码时:

link_list = [l.get('href') for l in soup.find_all('a')]
Run Code Online (Sandbox Code Playgroud)

它适用于该.get方法,但不适用于字典访问方式。

link_list = [l['href'] for l in soup.find_all('a')]
Run Code Online (Sandbox Code Playgroud)

这会抛出一个KeyError. 我对刮刮很陌生,所以如果这是一个愚蠢的,请原谅。

编辑 - 这两种方法都适用于 find 方法而不是 find_all。

ale*_*cxe 5

您可以让仅BeautifulSoup 查找具有现有href属性的链接。测试

您可以通过find_all()以下两种常见方式进行操作:

link_list = [a['href'] for a in soup.find_all('a', href=True)]
Run Code Online (Sandbox Code Playgroud)

或者,使用CSS 选择器

link_list = [a['href'] for a in soup.select('a[href]')]
Run Code Online (Sandbox Code Playgroud)