问题遇到的现象和发生背景 :

运行结果及报错内容 :无法查看图片
我的解答思路和尝试过的方法:觉得url提取错误
我想要达到的结果:能够查看下载好了的图片
import requests
url = 'https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E8%80%81%E8%99%8E&step_word=&hs=0&pn=1&spn=0&di=46137345&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=3237082112%2C831975960&os=276644228%2C3531290443&simid=3360591234%2C286890508&adpicid=0&lpn=0&ln=1307&fr=&fmq=1669206454718_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined©right=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=11&oriquery=&objurl=https%3A%2F%2Fpics3.baidu.com%2Ffeed%2F908fa0ec08fa513dc6722a6eaef01ef0b0fbd9cb.jpeg%40f_auto%3Ftoken%3D1c090301626137e09487ac61329ef5b2&fromurl=ippr_z2C%24qAzdH3FAzdH3Fkwt3twiw5_z%26e3Bkwt17_z%26e3Bv54AzdH3Ff%3Ft1%3D80ca8dac8mm9mmcc9d9%26ou6%3Dfrt1j6%26u56%3Drv&gsm=1e&rpstart=0&rpnum=0&islist=&querylist=&nojc=undefined&dyTabStr=MCwxLDMsNiw1LDQsOCw3LDIsOQ%3D%3D'
response = requests.get(url)
print(response.status_code)
print(response.content)
with open('tiger.jpg','wb') as file:
file.write(response.content)
print('图片下载完成')
import requests
from lxml import etree
from urllib.request import urlretrieve
url = 'https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E8%80%81%E8%99%8E&step_word=&hs=0&pn=1&spn=0&di=46137345&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=3237082112%2C831975960&os=276644228%2C3531290443&simid=3360591234%2C286890508&adpicid=0&lpn=0&ln=1307&fr=&fmq=1669206454718_R&fm=&ic=undefined&s=undefined&hd=undefined&latest=undefined©right=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=11&oriquery=&objurl=https%3A%2F%2Fpics3.baidu.com%2Ffeed%2F908fa0ec08fa513dc6722a6eaef01ef0b0fbd9cb.jpeg%40f_auto%3Ftoken%3D1c090301626137e09487ac61329ef5b2&fromurl=ippr_z2C%24qAzdH3FAzdH3Fkwt3twiw5_z%26e3Bkwt17_z%26e3Bv54AzdH3Ff%3Ft1%3D80ca8dac8mm9mmcc9d9%26ou6%3Dfrt1j6%26u56%3Drv&gsm=1e&rpstart=0&rpnum=0&islist=&querylist=&nojc=undefined&dyTabStr=MCwxLDMsNiw1LDQsOCw3LDIsOQ%3D%3D'
headers = {
'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'Host': 'image.baidu.com',
'sec-ch-ua-platform': "Windows",
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
}
#添加上请求头,要不然返回的html内容有问题,好像是网络不给力相关的内容,这样我们就不能从html中找到图片的信息
response = requests.get(url,headers=headers)
print(response.status_code)
## 这个是html代码的内容,直接写入图片,图片肯定是打不开的
# print(response.content)
#这种方式是直接把html写入到图片中了,肯定打不开图片的,应该分析html,找到图片对应的url后,再下载
# with open('tiger.jpg','wb') as file:
# file.write(response.content)
##完善后
html = etree.HTML(response.content.decode('utf-8'))
#获取图片的地址
img_url = html.xpath('//img[@id="currentImg"]/@src')[0]
#下载图片
urlretrieve(url=img_url,filename='tiger.jpg')
print('图片下载完成')