【发布时间】:2020-02-24 01:51:40
【问题描述】:
我正在尝试抓取网站上的唯一链接,但是当我这样做时,我收到以下错误,我不确定是什么原因造成的。
ResultSet 对象没有“endswith”属性。您可能将项目列表视为单个项目。当你打算调用 find() 时,你调用了 find_all() 吗?
我尝试更改 url 以查看它是否是链接,但它不起作用——我并不感到惊讶,但我想检查一下。
我查看了文档 (https://www.crummy.com/software/BeautifulSoup/bs4/doc/#miscellaneous),如果我理解正确,就是说使用 find 而不是 findall。我尝试使用 find 代替,但这并没有拉出任何东西,但即使这样做了,它也不会拉出我正在寻找的东西,因为我想要所有唯一的链接。
无论如何,这是代码。有什么想法或地方可以让我更了解这个错误吗? 导入请求
from bs4 import BeautifulSoup
import urllib.request
import urllib.parse
url="https://www.census.gov/programs-surveys/popest.html"
r=requests.get(url)
soup= BeautifulSoup(r.content, "html.parser")
links = soup.find_all("a")
for link in links:
link.get("href")
def unique_links(tags,url):
cleaned_links = set()
for link in links:
link = link.get("href")
if link is None:
continue
if link.endswith('/') or links.endswith('#'):
link = link [-1]
actual_url = urllib.parse.urljoin(url,link)
cleaned_links.add(actual_url)
return cleaned_links
cleaned_links = unique_links(links, url)
【问题讨论】:
标签: python web-scraping beautifulsoup