Получение ошибки AttributeError: у объекта ResultSet нет атрибута 'find_all' - PullRequest
0 голосов
/ 25 января 2020

Привет, я пытаюсь выяснить все ссылки, разбитые на страницы, и код части разбиения на страницы уже извлечен. но когда я пытался захватить все элементы списка, я получаю следующую ошибку:

AttributeError: у объекта ResultSet нет атрибута 'find_all'. Вы, вероятно, рассматриваете список элементов как один элемент. Вы вызывали find_all (), когда намеревались вызвать find ()?

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)

enter image description here

Я не понял термина AttributeError : Объект ResultSet не имеет атрибута 'find_all'. Кто-нибудь может проверить это, чего мне не хватает.

1 Ответ

1 голос
/ 25 января 2020

Проблема в том, что вы не можете вызвать .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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...