首页 > 解决方案 > 出现错误 AttributeError:ResultSet 对象没有属性“find_all”

问题描述

嗨,我正在尝试找出分页内容下的所有链接以及已经提取的分页部分代码。但是当我试图捕获所有列表项时,我收到以下错误:

AttributeError:ResultSet 对象没有属性“find_all”。您可能将元素列表视为单个元素。当您打算调用 find() 时,您是否调用了 find_all()?

import requests
from bs4 import BeautifulSoup

url = "https://scrapingclub.com/exercise/list_basic/"

response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')

pages = soup.find_all('ul', class_='pagination')
links = pages.find_all('a', class_='page-link')
print(links)

在此处输入图像描述

我不理解 AttributeError 一词:ResultSet 对象没有属性“find_all”。任何人都可以检查我所缺少的。

标签: beautifulsoup

解决方案


问题是您不能调用.find_all().find()在第一次调用返回的 ResultSet 上.find_all()

此示例将打印来自以下位置的所有链接pagination

import requests
from bs4 import BeautifulSoup

url = "https://scrapingclub.com/exercise/list_basic/"

response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')

pages = soup.find('ul', class_='pagination')          # <-- .find() to return only one element

for link in pages.find_all('a', class_='page-link'):  # <-- find_all() to return list of elements
    print(link)

印刷:

<a class="page-link" href="?page=2">2</a>
<a class="page-link" href="?page=3">3</a>
<a class="page-link" href="?page=4">4</a>
<a class="page-link" href="?page=5">5</a>
<a class="page-link" href="?page=6">6</a>
<a class="page-link" href="?page=7">7</a>
<a class="page-link" href="?page=2">Next</a>

推荐阅读