漂亮的汤没有遍历页面

时间:2019-05-21 20:22:37

标签: python python-3.x beautifulsoup

我正在尝试创建一个使用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。

1 个答案:

答案 0 :(得分:0)

在浏览器中输入https://www.goodreads.com/shelf/show/art?page=2https://www.goodreads.com/shelf/show/art?page=15时,我会看到相同的书。在BeautifulSoup中这不是问题,这就是该网站的构建方式。