用select()方法寻找元素,返回的值的类型 bs4.element.ResultSet

img


书上说elems的类型是list,但是我的为什么是element.ResultSet。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中的代码示例和描述,可以看出在使用select()方法寻找元素时返回的应该是一个由元素构成的列表。但是在你实际操作中得到的是一个element.ResultSet类型的结果。这种结果是正常的,它代表的是一组匹配到的元素的集合。

    element.ResultSet是BeautifulSoup库中的一个特定类型,它表示一组匹配到的元素。ResultSet对象是可遍历的,可以通过索引和迭代方式访问其中的每一个元素。

    若你希望获取其中的某个具体元素,可以通过下标或迭代的方式进行访问。若你需要对这组元素进行进一步的操作,例如提取属性或文本内容等,可以通过元素对象的相应方法进行。

    以下是一个示例代码,展示了如何获取select()方法返回的element.ResultSet对象和其中的元素:

    import requests
    from bs4 import BeautifulSoup
    
    url = "http://www.weather.com.cn/weather/101040100.shtml"
    header = ("User-Agent",
              "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36")
    
    r = requests.get(url, timeout=20)
    r.encoding = 'utf-8'
    soup = BeautifulSoup(r.text, "html.parser")
    div_list = soup.select('div')  # 获取所有div元素
    
    # 遍历输出div元素的文本内容
    for div in div_list:
        print(div.text)
    
    # 获取第一个div元素的某个属性值
    first_div = div_list[0]
    print(first_div['class'])
    

    以上代码通过请求指定URL获取网页内容,并使用select('div')方法提取所有的div元素。然后使用遍历方式输出每个div元素的文本内容,以及获取第一个div元素的class属性值。

    希望以上解答能够解决你的问题,如有疑问请继续提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^