我正在尝试创建一个使用python和Beautifulsoup从Goodreads中删除书名的功能。
我已经意识到一些阅读良好的页面具有以下形式的通用网址: “ https://www.goodreads.com/shelf/show/” + 类别名称 +“?page =” + 页面编号,因此我制作了一个函数,该函数可以按顺序接收类别名称和最大页面范围从第1页迭代到max_pages。
问题在于,每次程序迭代时,它不会更新页面,而是转到类别的第一页(默认)。我试图提供完整的网址,例如: https://www.goodreads.com/shelf/show/art?page=2 ,但它仍然无法正常工作,因此我猜测可能是BeautifulSoup将我传递的网址转换为另一种不起作用的格式,但我不知道。
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。
答案 0 :(得分:0)
在浏览器中输入https://www.goodreads.com/shelf/show/art?page=2和https://www.goodreads.com/shelf/show/art?page=15时,我会看到相同的书。在BeautifulSoup中这不是问题,这就是该网站的构建方式。