【问题标题】:amazon price web scraping with python, requests and bs4亚马逊价格网络抓取与 python、请求和 bs4
【发布时间】:2018-08-06 03:42:03
【问题描述】:

我有一个关于网络抓取亚马逊文章价格的问题。我试图得到一篇文章的价格,不幸的是它并不总是有效。我随机得到状态码 503(服务器不可用)。如果状态码 == 200,我可以通过 while 循环来解决这个问题。 我想了解服务器不可用的主要问题,所以我也许可以解决主要问题而不是解决它。到目前为止,该问题仅出现在亚马逊上。

这是我的 10 次测试代码。请求通常失败 2/10 次

import requests
from bs4 import BeautifulSoup


for i in range(10):
    page = requests.get("https://www.amazon.de/Bloodborne-Game-Year-PlayStation-4/dp/B016ZU4FIQ/ref=sr_1_3?ie=UTF8&qid=1519566642&sr=8-3&keywords=bloodborne+ps4")

    if page.status_code != 200:
        print("Error status code: " + str(page.status_code))
        continue

    soup = BeautifulSoup(page.content, "html.parser")

    price = soup.find(id="priceblock_ourprice", class_="a-size-medium a-color-price")


    price_string = price.get_text()

    print(price_string)

【问题讨论】:

  • 亚马逊故意阻止抓取它的前端。像这样抓取网站也违反了他们的 TOS,如果可能,请考虑使用他们的 API。亚马逊很可能会根据用户代理限制您被允许发出和/或阻止的请求数量。如果您在请求中添加浏览器用户代理标头,可能会获得更好的结果。
  • 好的,我想把它废弃用于我自己的练习。我是 python 初学者,这只是一个小小的价格警报 :) 感谢您的回答
  • @sytech 您说的是哪些 API?如果您指的是“产品广告 API”,则它们不适用于“普通”用户。看这里:webservices.amazon.com/paapi5/documentation/…
  • @mastupristi 如果未提供您需要的 API,那么如果您要遵守服务条款,这几乎就是故事的结局。一般来说,抓取产品页面可能违反了服务条款。

标签: python beautifulsoup python-requests


【解决方案1】:

试试下面的脚本。它应该会给你价格。

import requests
from bs4 import BeautifulSoup

URL = "https://www.amazon.de/Bloodborne-Game-Year-PlayStation-4/dp/B016ZU4FIQ/ref=sr_1_3?ie=UTF8&qid=1519566642&sr=8-3&keywords=bloodborne+ps4"
page = requests.get(URL,headers={"User-Agent":"Defined"})
soup = BeautifulSoup(page.content, "html.parser")
price = soup.find(id="priceblock_ourprice").get_text()
print(price)

输出:

EUR 34,99

【讨论】:

  • 我尝试了这段代码,但我猜亚马逊现在有一个新政策,因为我在输出中得到了这个:' '
【解决方案2】:

它很旧,但对于任何尝试这个的人来说:

你应该使用用户代理,这里是示例代码

headers = {
            myuseragent
                   }

        page = requests.get(url, headers=headers)

您可以在这里找到您的用户代理

user-agent

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多