| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
import requests 
from lxml import etree 
 
url = 'https://ssr1.scrape.center/' 
 
headers={ 
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'} 
name = requests.get(url=url,headers=headers) 
 
n = name.text 
 
n1 = etree.HTML(n) 
t = n1.xpath('//div[@id="index"]//a/img/@src') 
n = n1.xpath('//div[@id="index"]//a/h2/text()') 
 
for i in range(len(t)): 
    url=t[i] 
    n1=n[i] 
    print(url) 
    img = requests.get(url=url,headers=headers) 
    with open(n1,'wb') as f: 
        f.write(img.content) 
      #为什么截图中保存的不是.jpg格式的文件?不理解解?求大神指点?
你好!在你的代码中,存在一些问题导致保存的文件不是.jpg格式的。首先,你在循环中把所有的图片链接都赋值给了同一个变量url和n1,这样就导致在保存文件时使用的文件名都是相同的。其次,在xpath中获取到的图片链接是以http://或https://开头的完整链接,而不仅仅是图片的文件名,所以你需要做一些处理。 
下面是修改后的代码,可以下载并保存图片:
 - python
 - import requests
 - from lxml import etree
 - url = 'https://ssr1.scrape.center/'
 - headers = {
 -     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
 - }
 - response = requests.get(url=url, headers=headers)
 - html = response.text
 - selector = etree.HTML(html)
 - image_urls = selector.xpath('//div//a/img/@src')
 - names = selector.xpath('//div//a/h2/text()')
 - for i in range(len(image_urls)):
 -     image_url = image_urls[i]
 -     name = names[i] + '.jpg'
 -     if not image_url.startswith('http'):
 -         image_url = url + image_url
 -     response = requests.get(url=image_url, headers=headers)
 -     with open(name, 'wb') as f:
 -         f.write(response.content)
 
  复制代码
这样修改后,程序会根据每张图片的链接生成不同的文件名,并将图片保存为.jpg格式的文件。希望能帮助到你!如果还有其他问题,请随时提问。
 
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。  
 
 
 |   
- 
 
 
 
 
 
 
 
 |