統計に関連するより大きなプロジェクトの一環として、Amazon を解析して価格のリストを作成しようとしています。しかし、私は困惑しています。誰かが私のコードをレビューして、どこが間違っていたのか教えてくれるのだろうかと思っていましたか?
#!/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 であるため、問題が発生することはありません。
どんなアイデアでも大歓迎です。