我正在尝试解析亚马逊以编制价格清单,作为与统计相关的更大项目的一部分。然而,我很困惑。我想知道是否有人可以检查我的代码并告诉我哪里出了问题?
#!/usr/bin/python
# -*- coding: utf-8 -*-
import mechanize
from bs4 import BeautifulSoup
URL_00 = "http://www.amazon.co.uk/Call-Duty-Black-Ops-PS3/dp/B007WPF7FE/ref=sr_1_2?ie=UTF8&qid=1352117194&sr=8-2"
bro = mechanize.Browser()
resp = bro.open(URL_00)
html = resp.get_data()
soup_00 = BeautifulSoup(html)
price = soup_00.find('b', {'class':'priceLarge'})
print price #this should return at the very least the text enclosed in a tag
根据截图,我上面写的应该可以工作,不是吗?
如果我将最后一行之前的行更改为:
,我在打印输出中得到的只是“[]” price = soup_00.find('b', {'class':'priceLarge'}).contents[0].string
或
price = soup_00.find('b', {'class':'priceLarge'}).text
我收到“noneType”错误。
我很困惑为什么会发生这种情况。 chrome 上的 URL 中的页面编码为 UTF8,我的脚本在第 2 行中进行了调整。 我已将其更改为 ISO(根据页面的内部 HTML),但这使得差异为零,所以我确信编码不是这里的问题。
另外,不知道这是否相关,但我在 Linux 上的系统区域设置是 UTF-8 应该不会引起问题,不是吗?
无需这样做,因为亚马逊提供了API
https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html
产品广告 API 可帮助您使用产品搜索和查找功能、产品信息以及客户评论、类似产品、愿望清单以及新旧列表等功能来宣传亚马逊产品。
更多详细信息:适用于 Python 的 Amazon API 库?
我正在使用 API,它比从网页上抓取数据更容易、更可靠,甚至使用 BS。您还可以访问全新、二手等的价格清单,而不仅仅是“标题”价格。
这么多年过去了,这个问题仍然存在。我刚刚学习Python 中的抓取。我收到 503 错误。解析英国亚马逊网页似乎存在问题。对此有什么建议吗?这是使用bs4。我刚刚收到一条错误消息,大意是这是他们的问题,他们正在调查它。 我研究了使用上面提到的官方 API。除非您已被亚马逊接受为合作伙伴,否则您似乎无法使用产品广告 API,因为该 API 需要合作伙伴 ID 作为其身份验证的一部分。