Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 刮取的图像以某种方式防止刮取_Python_Image_Beautifulsoup - Fatal编程技术网

Python 刮取的图像以某种方式防止刮取

Python 刮取的图像以某种方式防止刮取,python,image,beautifulsoup,Python,Image,Beautifulsoup,我试图从一个网站上抓取图像URL,并在另一个网站上显示图像(使用BeautifulSoup),但是有问题的网站(yupoo.com)有某种保护,如果你不浏览他们的网站,可以防止从他们的服务器加载图像 如何重现我的问题: 无法加载此图像: 现在请访问此网站: 现在打开上面的链接 ”“对吗 它现在起作用的一些原因 我检查了Cookie和其他东西,但我真的不明白它们是如何保护自己的图像的你必须发送标题referer,然后服务器认为它是从页面加载的https://0832club.x.yupoo.co

我试图从一个网站上抓取图像URL,并在另一个网站上显示图像(使用BeautifulSoup),但是有问题的网站(yupoo.com)有某种保护,如果你不浏览他们的网站,可以防止从他们的服务器加载图像

如何重现我的问题:

无法加载此图像:

现在请访问此网站:

现在打开上面的链接 ”“对吗 它现在起作用的一些原因


我检查了Cookie和其他东西,但我真的不明白它们是如何保护自己的图像的

你必须发送标题
referer
,然后服务器认为它是从页面加载的
https://0832club.x.yupoo.com/29611853?uid=1

import requests

url = 'https://photo.yupoo.com/0832club_v/0058b582/96f83ddb.jpeg'

headers = {
    'referer': 'Referer: https://0832club.x.yupoo.com/29611853?uid=1'
}

r = requests.get(url, headers=headers)

print(r.content[:100])  # you can see string `JFIF` or `GIF` in content

f = open('output.jpg', 'wb')
f.write(r.content)
f.close()
使用
referer
我在
content
中看到字符串
JFIF
,因此它发送
JPG
。没有
referer
我在
content
中看到字符串
GIF
,所以它发送
GIF


你也可以查一下

print(r.headers['Content-Type'])

有了
referer
它会返回
image/jpeg
,没有
referer
它会返回
image/gif

通常浏览器在加载图像时会发送cookie和头文件(比如
referer
)。您可能需要发送所有这些信息才能下载。谢谢您的快速回答。但是我的python脚本已经从标记中抓取了正确的url。问题是打开我的网站的用户会显示.gif。我想看到的:不在yupoo网站bevore上的每个人都看到的:很抱歉,我的问题太不精确了,YOU不得不在你们的服务器上下载图片。您不能在
yupoo.com
上使用原始图像的url,因为web浏览器将始终使用您的服务器url作为
referer
,并且
yupoo.com
将始终阻止图像。顺便说一句:调用链接到其他服务器上的对象/图像,许多服务器会阻止这些链接。可能唯一的方法是将图像下载到服务器。但热链接或下载两者都可以被视为非法。