Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python、请求和bs4的amazon price web抓取_Python_Beautifulsoup_Python Requests - Fatal编程技术网

使用python、请求和bs4的amazon price web抓取

使用python、请求和bs4的amazon price web抓取,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,我有一个关于网上拍卖亚马逊文章价格的问题。我试图得到一件物品的价格,但不幸的是,它并不总是有效的。我随机获得状态代码503(服务器不可用)。我可以使用while循环来解决这个问题,该循环在状态代码=200时结束。 我想了解服务器不可用的主要问题,这样我就可以解决主要问题,而不是解决它。到目前为止,这个问题只发生在亚马逊上 这是我的10次测试代码。请求通常失败2/10次 import requests from bs4 import BeautifulSoup for i in range(1

我有一个关于网上拍卖亚马逊文章价格的问题。我试图得到一件物品的价格,但不幸的是,它并不总是有效的。我随机获得状态代码503(服务器不可用)。我可以使用while循环来解决这个问题,该循环在状态代码=200时结束。 我想了解服务器不可用的主要问题,这样我就可以解决主要问题,而不是解决它。到目前为止,这个问题只发生在亚马逊上

这是我的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)

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

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

它很古老,但对于任何尝试此功能的人:

您应该使用用户代理,下面是示例代码

headers = {
            myuseragent
                   }

        page = requests.get(url, headers=headers)
你可以在这里找到你的用户代理


Amazon故意阻止其前端的刮削。这也是一个违反他们的TOS,这样刮网站,考虑使用他们的API,如果可能的话。Amazon很可能正在根据用户代理限制允许您发出和/或阻止的请求数量。如果在请求中添加浏览器用户代理头,您可能会得到更好的结果。好的,我想在我自己的实践中放弃它。我是一个python初学者,这只是一个小小的价格警报:)谢谢你的支持answer@sytech你在谈论哪些API?如果您指的是“产品广告API”,则“普通”用户无法使用这些API。请看这里:@mastupristi如果没有提供您需要的API,那么如果您要遵守服务条款,那么故事就到此结束。一般来说,刮取产品页面可能违反服务条款。我尝试了这段代码,但我想亚马逊现在有了一个新的策略,因为我在输出中得到了这一点:“”