1

Python初心者はこちら。リンク、特に Amazon 製品ページの「すべてのレビュー」へのリンクを抽出しようとしています。予想外の結果が得られます。

import urllib2
req = urllib2.Request('http://www.amazon.com/Ole-Henriksen-Truth-Collagen-         Booster/dp/B000A0ADT8/ref=sr_1_1?s=hpc&ie=UTF8&qid=1342922857&sr=1-1&keywords=truth')
response = urllib2.urlopen(req)
page = response.read()
start = page.find("all reviews")
link_start = page.find("href=", start) + 6
link_end = page.find('"', link_start)
print page[link_start:link_end]

プログラムは次のように出力する必要があります :

代わりに、次のように出力します: http://www.amazon.com/Ole-Henriksen-Truth-Collagen-Booster/product-reviews/B000A0ADT8

4

2 に答える 2

1

あなたと同じ結果が得られますが、それは単に、Amazon があなたの Python スクリプトに提供するページが、私のブラウザに提供するものと異なるためのようです。ダウンロードしたページをディスクに書き込んで、テキスト エディターにロードしましADT8"/ref=dp_top

Amazon がブラウザと同じページを表示できるようにするには、おそらく、スクリプトをブラウザのように動作させる必要があります (たとえば、Cookie を受け入れて送信するなど)。これにはmechanizeモジュールが役立ちます。

于 2012-07-22T04:42:40.410 に答える
0

うん、いいよ。たとえば、ユーザー エージェントを偽装する通常のトリックを行う場合:

req = urllib2.Request('http://www.amazon.com/Ole-Henriksen-Truth-Collagen-Booster/dp/B000A0ADT8/ref=sr_1_1?s=hpc&ie=UTF8&qid=1342922857&sr=1-1&keywords=truth')
ua = 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20110506 Firefox/4.0.1'    
req.add_header('User-Agent', ua)
response = urllib2.urlopen(req)

次に、次のようなものを取得する必要があります

localhost-2:coding $ python plink.py
http://www.amazon.com/Ole-Henriksen-Truth-Collagen-Booster/product-reviews/B000A0ADT8/ref=dp_top_cm_cr_acr_txt/190-6179299-9485047?ie=UTF8&showViewpoints=1

これはあなたが望むものに近いかもしれません。

[免責事項: 実行する前に、Amazon の TOS ルールが何をしようとしても許可されていることを確認してください..]

于 2012-07-22T04:51:19.777 に答える