你的代码中:
i.get('src')得到的J 标签中'src'的属性值,我刚才看了一下,并不是每个i表示的标签里的src属性值都是可用的,以下是我按你的代码,得到的每个i.get('src')的值:
从图片中可以看到,只有一部分的字符串是图片链接,也就是说并不是每个标签中的src属性的值都是图片链接,所以如果你想要不报错,需要把i.get('src')进行一下判断,如果是真正的图片链接才下载,否则跳过,这样就不会报错了
*.图片要是看不清的话,不要点开大图,然后右键复制图片链接地址,放到地址栏中打开就可看高清图了
下面是我根据你的代码改过的,你可以试一下,有问题追问:
------------------------End------------------------
import requests
from bs4 import BeautifulSoup
import urllib.request
import re
def GetImg():
response = requests.get('http://desk.zol.com.cn/bizhi/8376_103851_2.html')
html = response.text
soup = BeautifulSoup(html, 'html.parser')
picture = soup.find_all('img')
list = []
for i in picture:
img1 = i.get('src')
links = re.findall(re.compile('http.*.jpg$'),str(img1))
if len(links) != 0:
list.append(img1)
for i in range(len(list)):
urllib.request.urlretrieve(list[i],'%d.jpg'%i)
print("已下载%d/%d张图片"%(i,len(list)))
GetImg()
------------------------End------------------------
追问谢谢大佬,可以帮我把每一句标上注释吗😓麻烦就算了
追答可以,稍等
追问谢谢了大佬
大佬我这个程序运行到一半一直报错,有的网站爬到第十几张会报错 有的第二三张就报错了,是程序哪些地方出错了吗😥
追答对的,不是错,是程序还不完善,比如请求过快,没有超时重试等
本回答被提问者采纳