我試圖解析亞馬遜編制價格清單,作爲與統計相關的更大項目的一部分。但是,我很難過。我想知道如果任何人都可以查看我的代碼並告訴我哪裏出錯了?BeautifulSoup和Amazon.co.uk
#!/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應該不會造成問題嗎?
任何想法都會受到歡迎。
而且您已確認Mechanize與您的瀏覽器具有完全相同的HTML?否*不*認爲亞馬遜會向不同的用戶代理髮送完全相同的響應。 –
只是所以你不認爲我忽略了評論=) 我已經添加了一個用戶代理來機械化我的機器。從我的瀏覽器下載的版本等於一個機械拉,所以這不應該是一個問題... – NopeNopeNope