【问题标题】:Error: ResultSet object has no attribute 'endswith'错误:ResultSet 对象没有属性“endswith”
【发布时间】: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


【解决方案1】:

您的代码中有一个错字:link.endswith('#'): 而不是链接。

if link.endswith('/') or link.endswith('#'):
            link = link [-1]

【讨论】:

    猜你喜欢
    • 2013-06-20
    • 2016-04-15
    • 2021-02-16
    • 2014-10-24
    • 2018-08-06
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    相关资源
    最近更新 更多