我正在尝试解析亚马逊,以汇编一个价目表,这是一个与统计相关的更大项目的一部分。然而,我被难住了。我想知道是否有人可以检查我的代码,并告诉我哪里出错了?
#!/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“错误。
我很困惑为什么会发生这样的事情。我已经把它改成了UTF8 (根据页面内部的超文本标记语言),但这没有什么区别,所以我肯定编码不是问题所在。
另外,我不知道这是否相关,但是我在linux上的系统区域设置是UTF-8应该不会造成问题吧?
任何想法都是受欢迎的。
发布于 2012-11-05 20:22:36
不需要这样做,因为Amazon提供了API
https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html
产品广告应用编程接口可帮助您使用产品搜索和查找功能、产品信息和功能(如客户评论、类似产品、愿望列表以及新的和使用过的列表)来宣传亚马逊产品。
更多细节在这里:Amazon API library for Python?
我正在使用API,它比从网页上抓取数据要容易得多,也可靠得多,即使是用BS。你还将获得一个新的,二手等的价格列表,而不仅仅是“标题”价格。
https://stackoverflow.com/questions/13231937
复制相似问题