2012-02-23 14 views
1

それを見ている:ダウンロードamazon.co.ukのWebページには、正確に放火犯としてのHTMLは、私はurllibはを使用してWebページをダウンロードすることに気づい

http://www.amazon.co.uk/Darkness-II-Limited-PC-DVD/dp/B005ULLEX6

私もまた、urlopen使用して取り戻すコンテンツ(URL) .read()は、火花虫類が見るものとは異なります。

例:ページの画像領域への放火犯を指している場合、それはあなたののdivのid =「prodImageCell」を開設しているもののpythonを見たときにしかし、存在を伝え

、そのようなものはありませんしたがって、美しいものは何も見つかりません。

これは画像がjavascriptを使用して生成されたためですか?

質問:

ので、ほとんどまったく同じことの放火犯をダウンロードする方法は、urllibは使用して(代わりに、セレンのようなものを使用していない)が見ている場合。

画像の1つのソースURLをプログラムによって取得しようとしています。ここでは、prodImageCellのdivはsrc = http://ecx.images-amazon.com/images/I/51uPDvJGS3Lです。 AA300 .jpg実際には画像のURLです。

回答:私は評判を持っていないので、

が適切に答えることができない:(

は、ソリューションに正しい方向に私を指しているため@huelboisのおかげで見つかったものなニーズユーザーエージェントヘッダーを使用します。

>>> import urllib2 
>>> import re 
>>> site = urllib2.urlopen('http://www.amazon.co.uk/\ 
Darkness-II-Limited-PC-DVD/dp/B005ULLEX6').read() 
>>> re.search('prodImageCell', site) 
>>> 

>>> user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101\ 
Firefox/7.0.1" 
>>> headers = {'User-Agent':user_agent} 
>>> req = urllib2.Request(url=url,headers=headers) 
>>> site = urllib2.urlopen(req).read() 
>>> re.search('prodImageCell', site) 
<_sre.SRE_Match object at 0x01487DB0> 

万歳の後

+0

そのIDは、生のHTMLには間違いないので、あなたは 'urlopen'でそれを見ることができます。このdivにアクセスしようとしているコードを投稿することはできますか? –

+1

あなたが送信するHTTPヘッダ(user-agentなど)にも依存する可能性があります。 Firefoxから送信されたものと同じヘッダーを送信しようとしましたか? (あなたはリクエスト部分でそれらを見ることができます)。それらのいくつかは重要であるかもしれません。 – huelbois

+0

+1 @huelboisは、それを考えなかった、それを行ってくれます。 Matthew私は正規表現を使って 'prodImageCell'を見つけ、一致が返されないサンプルを投稿します – user562427

答えて

2

今すぐwgetでテストしました(urrlibのように動作します)。 要求された部分を取得するには、User-Agentヘッダーを含める必要があります。

wget -Or- --header = 'User-Agent:Mozilla/5.0(Windows NT 6.1; rv:9.0.1)Gecko/20100101 Firefox /9.0.1 'http://www.amazon.co.uk/Darkness-II-Limited-PC-DVD/dp/B005ULLEX6

は、要求された部分を含むHTMLページを返します。

oops:今すぐ私の以前のアドバイスで成功しました。すばらしいです!

関連する問題