2017-01-12 4 views
0

requests.get、つまりrequests.get(url, headers)requests.get(url)の間にヘッダーを渡すときの違いを知りたいと思います。要求にヘッダーを渡すことの影響?

は、私は、コードのこれら2つがあります。

from lxml import html 
from lxml import etree 
import requests 
import re 

url = "http://www.amazon.in/SanDisk-micro-USB-connector-OTG-enabled-Android/dp/B00RBGYGMO" 

page = requests.get(url) 
tree = html.fromstring(page.text) 
XPATH_IMAGE_SOURCE = '//*[@id="main-image-container"]//img/@src' 
image_source = tree.xpath(XPATH_IMAGE_SOURCE) 
print 'type: ',type(image_source[0]) 
print image_source[0] 

そのアウトプットあなたが期待通りのURLがあるこの。しかし、この:

from lxml import html 
from lxml import etree 
import requests 
import re 

url = "http://www.amazon.in/SanDisk-micro-USB-connector-OTG-enabled-Android/dp/B00RBGYGMO" 
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'} 
page = requests.get(url, headers=headers) 

tree = html.fromstring(page.text) 
XPATH_IMAGE_SOURCE = '//*[@id="main-image-container"]//img/@src' 
image_source = tree.xpath(XPATH_IMAGE_SOURCE) 
print 'type: ',type(image_source[0]) 
print image_source[0] 

が、私はこれを推測しているdata:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAoHBwgHBgoIC で始まる出力を持っているが、レンダリングせずに、実際の画像、単なるデータです。どのように私はURLの形式でそれを保つことができる任意のアイデア?ヘッダーの存在が他のどのような方法で応答に影響を与えますか?

+0

私は尋ねると周りに尋ねたと私は、ブラウザの名前を送信すると、サーバーは、ブラウザがデータを送信したと考えていることを知った。ブラウザにイメージを送信する機能があることを知っているが、ヘッダーがない場合はサーバーがわからない。デバイスがイメージをレンダリングする能力を持っている場合、私にURLを送信する。 –

+0

私はまた、ウェブサイトがヘッダーで私をブロックする可能性は低いと読んでいます。 –

+0

私はこれについてのドキュメントの確かなソースを見つけていません!、誰かがそれを手伝ってくれますか? –

答えて

1

保存、ブラウザでHTMLファイル、オープンに最初のコードの応答をありがとう: enter image description here

あなたが見ることができるように、あなたは、ヘッダーなしでAmazonが禁止されています。

使用このXPathの:

XPATH_IMAGE_SOURCE = '//*[@id="main-image-container"]//img/@data-old-hires' 

アウト:

type: <class 'lxml.etree._ElementStringResult'> 
http://ecx.images-amazon.com/images/I/617TjMIouyL._SL1274_.jpg 

これは生のHTMLデータである:

<img alt=".." src="&#10;data:image/webp;base64,UklGRuYIAABXRUJQVlA4INoIAACQQQCdASosAcsAPrFWpEqkIqQhIxN6gIgWCek6r4bUf/..." 
data-old-hires="http://ecx.images-amazon.com/images/I/617TjMIouyL._SL1274_.jpg" 

画像のURLがdata-old-hires属性です。

+0

いいえ、私の最後に私はページを取得しています。そして、ページのデータを廃棄します。私はその要求のソースのいくつかの違いに起因すると思いますか? –

+1

@Achyut Rastogi私は新しいXPathを投稿します –

+0

しかし、なぜこのxpathは異なった働きをしますか? –

関連する問題