BeautifulSoup和Amazon.co.uk

时间:2012-11-05 12:16:12

标签: python amazon beautifulsoup mechanize

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

#!/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 (cannot post an image as a newbie..)

我打印的所有内容都是“[]”,如果我在最后一行之前更改了这一行:

 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应该不会导致问题吗?

欢迎任何想法。

1 个答案:

答案 0 :(得分:0)

由于亚马逊提供API

,因此无需执行此操作

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

  

Product Advertising API可帮助您使用产品搜索和查找功能,产品信息和功能(如客户评论,类似产品,愿望清单和新旧列表)来宣传亚马逊产品。

此处提供更多详细信息:Amazon API library for Python?

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