Красивый суп не перебирает страницы - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь создать функцию, которая собирает имена книг из goodreads, используя python и Beautifulsoup.

Я понял, что некоторые страницы goodread имеют общий URL-адрес в форме: "https://www.goodreads.com/shelf/show/" + category_name + "? Page =" + page_number , поэтому я создал функцию, которая получает имя категории и максимальный диапазон страниц для перехода от страницы 1 к max_pages.

Проблема в том, что при каждой итерации программы она не обновляет страницу, а вместо этого переходит на первую (по умолчанию) страницу для категории. Я попытался указать полный URL-адрес, например: https://www.goodreads.com/shelf/show/art?page=2 но все равно не работает, поэтому я предполагаю, что BeautifulSoup преобразует URL-адрес, который я передаю, в другой формат, который не работает, но я не знаю.

def scrap_category(category_name, search_range):

    book_names = []

    for i in range(search_range):
        quote_page = "https://www.goodreads.com/shelf/show/" + category_name + "?page=" + str(i + 1)
        page = urlopen(quote_page)
        soup = BeautifulSoup(page,'lxml')
        names = soup.find_all('a', attrs={"class":'bookTitle'})

        for name in names:
                book_name = name.text
                book_name = re.sub(r'\"','',book_name)
                book_names.append(book_name)

    return book_names

Результатом этого кода всегда являются имена книг с первой страницы категории, которые я передаю в качестве параметра, а не second , third ... или n страница в диапазоне от 1 до max_pagesчто я запрашиваю.

1 Ответ

0 голосов
/ 21 мая 2019

Я вижу те же книги, когда в браузере вводю https://www.goodreads.com/shelf/show/art?page=2 и https://www.goodreads.com/shelf/show/art?page=15. Это не проблема в BeautifulSoup, просто так был построен этот сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...