4

統計に関連するより大きなプロジェクトの一環として、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

スクリーンショットによると、上に書いたことはうまくいくはずですよね?

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

Amazon が API を提供しているため、これを行う必要はありません。

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

Product Advertising API は、商品検索と検索機能、商品情報、およびカスタマー レビュー、類似商品、ウィッシュ リスト、新品および中古のリストなどの機能を使用して、Amazon の商品を宣伝するのに役立ちます。

詳細はこちら: Python 用の Amazon API ライブラリ?

私はAPIを使用していますが、BSを使用しても、Webページからデータをスクレイピングする方がはるかに簡単で信頼性があります。また、「ヘッドライン」価格だけでなく、新品、中古品などの価格リストにもアクセスできます。

于 2012-11-05T12:22:36.267 に答える