使用python、请求和bs4的amazon price web抓取
我有一个关于网上拍卖亚马逊文章价格的问题。我试图得到一件物品的价格,但不幸的是,它并不总是有效的。我随机获得状态代码503(服务器不可用)。我可以使用while循环来解决这个问题,该循环在状态代码=200时结束。 我想了解服务器不可用的主要问题,这样我就可以解决主要问题,而不是解决它。到目前为止,这个问题只发生在亚马逊上 这是我的10次测试代码。请求通常失败2/10次使用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
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,那么如果您要遵守服务条款,那么故事就到此结束。一般来说,刮取产品页面可能违反服务条款。我尝试了这段代码,但我想亚马逊现在有了一个新的策略,因为我在输出中得到了这一点:“”