Image 在请求中传递头的效果?

Image 在请求中传递头的效果?,image,python-2.7,web-scraping,request,Image,Python 2.7,Web Scraping,Request,我想知道当你在请求中传递头时会有什么区别。get即请求之间的区别。get(url,headers)和请求。get(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" page = requests.

我想知道当你在
请求中传递头时会有什么区别。get
请求之间的区别。get(url,headers)
请求。get(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"

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]
具有以
数据开始的输出:image/jpeg;base64,/9j/4AAQSKZJRGABAQAAAQABAD/2wBDAAoHBwgHBgoIC
我猜这是没有渲染的实际图像,只是普通数据。你知道我怎样才能把它保持在url格式吗?头的存在在哪些方面影响我们得到的响应


谢谢

将第一个代码的响应保存到html文件并在浏览器中打开:

正如你所看到的,你被amazon禁止,没有标题

使用此xpath:

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

类型:
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
属性中。

好的,所以我四处询问并搜索,发现当我在标题中发送浏览器名称时,服务器认为浏览器发送了数据。知道浏览器有能力呈现图像,它会发送图像,但如果没有标题,服务器不知道我的设备是否有能力呈现图像,因此它会向我发送url。我还了解到网站不太可能用标题阻止我,这是真的吗?我还没有找到可靠的文档来源!,有人能帮我吗?不,在我这边我会拿到那一页。以及删除页面中的数据。我猜这是因为请求来源不同@Achyut Rastogi我为您发布了新的XPath
<img alt=".." src="&#10;data:image/webp;base64,UklGRuYIAABXRUJQVlA4INoIAACQQQCdASosAcsAPrFWpEqkIqQhIxN6gIgWCek6r4bUf/..." 
data-old-hires="http://ecx.images-amazon.com/images/I/617TjMIouyL._SL1274_.jpg"