无法使用Python和BS4导航Amazon分页

时间:2018-03-07 00:47:11

标签: python web-scraping beautifulsoup

我一直在努力创建一个简单的网络抓取程序,以便在亚马逊上搜集100本畅销书排行榜。我之前在其他网站上使用过此代码没有任何问题。但由于某种原因,它会废弃第一页,但随后会针对以下迭代发布相同的结果。

我不确定它是否与亚马逊如何创建网址有关。当我手动输入"#2" (以及更高版本)在浏览器的URL末尾,它可以很好地导航。

(一旦scrape正在工作,我计划将数据转储到csv文件中。但是现在,打印到终端就行了。)

import requests
from bs4 import BeautifulSoup

for i in range(5):
    url = "https://smile.amazon.com/Best-Sellers-Kindle-Store-Dystopian-Science-Fiction/zgbs/digital-text/6361470011/ref=zg_bs_nav_kstore_4_158591011#{}".format(i)
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "lxml")

    for book in soup.find_all('div', class_='zg_itemWrapper'):
        title = book.find('div', class_='p13n-sc-truncate')
        name = book.find('a', class_='a-link-child')
        price = book.find('span', class_='p13n-sc-price')

        print(title)
        print(name)
        print(price)

print("END")

1 个答案:

答案 0 :(得分:1)

这是您必须面对的常见问题,一些站点异步加载数据(使用ajax),这些是您可以在DOM检查器的选项卡网络中看到的XMLHttpRequest。通常,网站使用POST方法从不同的端点加载数据,以解决您可以使用urllib或请求库的问题。

在这种情况下,请求是通过GET方法进行的,您可以从此网址中删除该请求,而无需扩展您的代码https://www.amazon.com/Best-Sellers-Kindle-Store-Dystopian-Science-Fiction/zgbs/digital-text/6361470011/ref=zg_bs_pg_3?_encoding=UTF8&pg=3&ajax=1,只需更改pg参数