gpt4 book ai didi

python - 使用 BeautifulSoup 从网页抓取的 URL

转载 作者:太空宇宙 更新时间:2023-11-04 02:18:14 26 4
gpt4 key购买 nike

根据标题,我抓取了我感兴趣的网页并将 URL 保存在一个变量中。

import requests
from bs4 import BeautifulSoup

for pagenumber in range(1, 2):
url = 'https://www.congress.gov/search?q=%7B%22source%22%3A%22legislation%22%2C%22congress%22%3A%22112%22%7D&page={}'.format(pagenumber)
res = requests.get(url, headers = {'User-agent': 'Chrome'})

soup = BeautifulSoup(res.text, 'html.parser')
lists = soup.find_all("li", {"class" : "expanded"})

for bill in lists:
block = bill.find("span", {"class":"result-item"})
link_cosponsors = block.find_all("a")[1]['href'] # I am interested in the second URL

最后一行是给我 URL 列表。现在我正在努力访问每个 URL 并从每个 URL 中抓取新信息。

for url in link_cosponsors:

soup_cosponsor = BeautifulSoup(requests.get(url).text, 'html.parser')
table = soup.find('table', {'class':'item_table'})

我认为问题在于 link_cosponsors 的创建方式,即列表的第一个元素不是完整的“https://etc”。 .'但只有 'h',因为我收到错误消息“无效的 URL 'h':未提供架构。也许你的意思是 http://h?”。我已尝试将链接附加到列表,但这也不起作用。

最佳答案

问题是您要在 for 循环的每次迭代中重新分配 link_cosponsors。这样,此变量将仅保存您找到的最后一个字符串形式的链接。

然后发生的是您的 for url in link_cosponsors 逐个字母地遍历该字符串。基本上是这样的:

for letter in 'http://the.link.you.want/foo/bar':
print(letter)

解决方案:您应该将第一个代码段的最后 3 行替换为:

link_cosponsors = []
for bill in lists:
block = bill.find("span", {"class":"result-item"})
link_cosponsors.append(block.find_all("a")[1]['href'])

关于python - 使用 BeautifulSoup 从网页抓取的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52140806/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com