Я пытаюсь создать функцию, которая собирает имена книг из 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что я запрашиваю.