4

我正在尝试解析亚马逊以编制价格清单,作为与统计相关的更大项目的一部分。但是,我很难过。我想知道是否有人可以查看我的代码并告诉我哪里出错了?

#!/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

根据屏幕截图,我上面写的应该可以工作,不是吗?

http://i.imgur.com/bPVe1.png (不能以新手的身份发布图像..)

好吧,我在打印输出中得到的只是“[]”,如果我将最后一行更改为:

 price = soup_00.find('b', {'class':'priceLarge'}).contents[0].string

或者

price = soup_00.find('b', {'class':'priceLarge'}).text

我收到“noneType”错误。

我很困惑为什么会这样。chrome 上 URL 中的页面编码为 UTF8,我的脚本在第 2 行中调整为 UTF8。我已将其更改为 ISO(根据页面的内部 HTML),但这使差异为零,所以我认为正编码不是这里的问题。

另外,不知道这是否相关,但是我在 linux 上的系统语言环境是 UTF-8 应该不会引起问题吗?

任何想法都会受到欢迎。

4

1 回答 1

1

没有必要这样做,因为亚马逊提供了 API

https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/main.html

产品广告 API 可帮助您使用产品搜索和查找功能、产品信息和功能(例如客户评论、类似产品、愿望清单以及新旧清单)来宣传亚马逊产品。

更多详细信息:适用于 Python 的 Amazon API 库?

我正在使用 API,它比从网页上抓取数据更容易和可靠,即使是 BS。您还可以访问新的、二手的等价格列表,而不仅仅是“标题”价格。

于 2012-11-05T12:22:36.267 回答