📜  如何在 bs4 python 中获取所有 href (1)

📅  最后修改于: 2023-12-03 15:08:34.266000             🧑  作者: Mango

如何在 bs4 python 中获取所有 href

在 bs4 中,可以使用 find_all() 方法来获取所有符合要求的标签。如果想要获取所有 a 标签中的 href 属性,可以使用以下代码:

from bs4 import BeautifulSoup
import requests

url = 'https://www.example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

links = []
for link in soup.find_all('a'):
    links.append(link.get('href'))

print(links)

代码解析:

  1. 首先我们导入了 BeautifulSouprequests 库。
  2. 定义了需要获取 href 属性的网址 url
  3. 使用 requests.get() 方法请求页面,并将响应内容传递给 BeautifulSoup 解析。
  4. 调用 soup.find_all('a') 方法获取所有 a 标签,并使用 for 循环依次遍历每一个标签。
  5. 在循环中,通过 link.get('href') 方法获取 href 属性的值,并将其添加到 links 列表中。
  6. 最后打印出 links 列表。

这个代码片段的输出结果将是一个包含所有网址的列表。如果你想要将网址保存到一个文件中,可以使用以下代码:

with open('links.txt', 'w') as f:
    for link in links:
        f.write(link + '\n')

这段代码将将网址逐行写入名为 links.txt 的文件中。

除了上述方法外,你还可以使用 select() 方法来获取所有 a 标签的 href 属性。代码如下:

links = [link['href'] for link in soup.select('a[href]')]

使用 select() 方法可能比使用 find_all() 更快,特别是在处理大型 HTML 文档时。这是因为 select() 方法使用CSS选择器语法,可以更快地解析文档。

总之,在 bs4 中获取所有 a 标签的 href 属性是非常简单的,可以使用 find_all()select() 方法实现。