我正在尝试解析亚马逊以编制价格清单,作为与统计相关的更大项目的一部分。但是,我很难过。我想知道是否有人可以查看我的代码并告诉我哪里出错了?
#!/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 行中调整为 UTF8。我已将其更改为 ISO(根据页面的内部 HTML),但这使差异为零,所以我认为正编码不是这里的问题。
另外,不知道这是否相关,但是我在 linux 上的系统语言环境是 UTF-8 应该不会引起问题吗?
任何想法都会受到欢迎。