python爬虫爬取图片下载本地

这里的最后一个图片为什么下载不到本地,就最后一个图片有问题,求解

img

import requests
import urllib.request
from bs4 import BeautifulSoup
url = 'https://www.starbucks.com.cn/menu/'
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
}
wb_data=requests.get(url=url,headers=headers)
response=urllib.request.urlopen(url)
content = response.read().decode('utf-8')

soup = BeautifulSoup(content, 'lxml')
#//url[@class="grid padded-3 product"]//strong/text()
#name_list = soup.select('ul[class="grid padded-3 product"]')
#imgs=soup.find_all('div')
imgs= soup.select('ul[class="grid padded-3 product"] div')
name_list=soup.select('ul[class="grid padded-3 product"] strong')
for i in range(len(name_list)):
        name = name_list[i]
        name1 = name.get_text()
        url=imgs[i].get("style")
        url = url[23:len(url) - 2]
        url = 'https://www.starbucks.com.cn/' + url

        print(name1)
        print(url)

        urllib.request.urlretrieve(url=url, filename='E:\软件\Pycharm_Project\loveImg\\' +name1+'.jpg')

print('---download---')

文件路径不能有斜杠

答案同楼上,其他建议如下:

  1. 最好不要直接使用爬取获得的字段来为图片命名,使用UUID+映射表的方式比较合适
  2. 如果必须使用,需要对爬取的字段进行分析,对其中的内容进行转义。转义方法为:
    def addslashes(s):
    s=str(s)
    d = {'"':'\"', "'":"\'", "\0":"\\0", "\":"\\"}
    return ''.join(d.get(c, c) for c in s)