python爬取图片

请问为什么最后的图片是空白的?谢谢!用了headers进行反爬

import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67'}
ur1 = 'https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=jim%20keller&step_word=&hs=0&pn=5&spn=0&di=7249025186345779201&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=1843604358%2C3515739569&os=3938264110%2C2426393826&simid=3434210453%2C590366098&adpicid=0&lpn=0&ln=212&fr=&fmq=1691202257157_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=https%3A%2F%2Fimg1.mydrivers.com%2Fimg%2F20190704%2Fb035232f-2733-49ca-b389-b1593a8d70da.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fetjor5tgp_z%26e3B4y16tej6f_z%26e3Bv54AzdH3F8AzdH3Fmn9AzdH3Fmn9mmd_z%26e3Bip4&gsm=1e&rpstart=0&rpnum=0&islist=&querylist=&nojc=undefined&dyTabStr=MTEsMCwxLDIsNiw0LDUsMywsNyw4LDk%3D'
res = requests.get(ur1).content
file = open('图片.jpg', 'wb')
file.write(res)
file.close()

img

img

这是一个网页,不是一个纯图片的网址,所以会出错啊。
要把 url 改成图片网址https://img1.mydrivers.com/img/20190704/b035232f-2733-49ca-b389-b1593a8d70da.jpg

【以下回答由 GPT 生成】

问题描述: 您希望通过Python爬取图片,但是爬取到的图片是空白的。您已经使用了headers进行反爬,但是问题仍然存在。您希望了解如何优化代码以解决该问题。

为了优化您的问题,以下是改进后的问题描述:

问题描述: 我正在尝试使用Python来爬取图片,并使用了headers进行反爬措施,但是我得到的图片是空白的。请问我该如何优化我的代码以解决这个问题?

改进后的代码如下:

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67'
}

url = 'https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=jim%20keller&step_word=&hs=0&pn=5&spn=0&di=7249025186345779201&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=1843604358%2C3515739569&os=3938264110%2C2426393826&simid=3434210453%2C590366098&adpicid=0&lpn=0&ln=212&fr=&fmq=1691202257157_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=https%3A%2F%2Fimg1.mydrivers.com%2Fimg%2F20190704%2Fb035232f-2733-49ca-b389-b1593a8d70da.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fetjor5tgp_z%24e3B4y16tej6f_z%24
e3Bv54AzdH3F8AzdH3Fmn9AzdH3Fmn9mmd_z%24e3Bip4&gsm=1e&rpstart=0&rpnum=0&islist=&querylist=&nojc=undefined&dyTabStr=MTEsMCwxLDIsNiw0LDUsMywsNyw4LDk%3D'

# 发送GET请求并获取响应
res = requests.get(url, headers=headers)
# 解析响应的HTML内容
soup = BeautifulSoup(res.content, 'html.parser')
# 在HTML中找到包含图片的标签
img_tag = soup.find('img')
# 获取图片的链接
image_url = img_tag['src']
# 发送GET请求获取图片的内容
image_res = requests.get(image_url, headers=headers)
# 将图片保存到本地
with open('图片.jpg', 'wb') as file:
    file.write(image_res.content)

在优化后的代码中,我添加了以下改进:

  1. 引入了from bs4 import BeautifulSoup,用于解析HTML内容。
  2. 使用BeautifulSoup解析服务器的响应内容,以便从HTML中提取出图片的链接。
  3. 获取图片的链接并发送GET请求以获取图片的内容。
  4. 将图片内容保存到本地。

请尝试使用优化后的代码,并留意其中的变化和改进。如果您仍然遇到问题,请告诉我,我将尽力提供帮助。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^