成功获取图片链接后却无法向本地写入图片?

发布于 2022-09-05 08:56:05 字数 1400 浏览 11 评论 0

这是源码,20页的图片链接存放在links中用循环写入本地,链接能够正确得出,但写入本地部分会报错

import requests
import urllib.request
from time import sleep
from bs4 import BeautifulSoup

# url = 'https://weheartit.com/inspirations/taylorswift?page=1&before=275543698'
urls = ['https://weheartit.com/inspirations/taylorswift?page={}&before=275543698'.format(str(i)) for i in range(1,21)]
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
}
proxies = {"http": "http://122.72.32.73:80"}

folder_path = r'E:\文档\Python\Taylor Swift'
links = []
i = 0

def get_image(url):
    data = requests.get(url, headers=headers)
    sleep(2)
    soup = BeautifulSoup(data.text,'lxml')
    imgs = soup.select('img[width="300"]')

    # 判断链接后缀并替换为.webp
    for img in imgs:
        link = img.get('src')
        if link[-4:] =='.png':
            img_link = link.replace('png', 'webp')
        else:
            img_link = link.replace('jpg','webp')
        links.append(img_link)

    for link in links:
        urllib.request.urlretrieve(link, folder_path + '\\' + str(i) + link[-4:])
        global i
        i += 1
        print('完成第%d张' % i)

for url in urls:
    get_image(url)

报错内容:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

面犯桃花 2022-09-12 08:56:06

实际用的代码,不是你给出的代码吧。
报错信息是证书问题,而源网站证书我现在访问没问题,我猜,是因为你用了代理,而代理那层你没有处理证书。(怎么处理又要说一大堆)

橙味迷妹 2022-09-12 08:56:06

最近使用python2.7.12 访问公司的https API获取内容,同样引发这个错误。找到一圈原因如下:
Python 2.7.9 之后引入了一个新特性,当你urllib.urlopen一个 https 的时候会验证一次 SSL 证书,当目标使用的是自签名的证书时就会raise urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)> 的错误消息. requests 也一样。
对于requests模块,post和get都有一个叫verify的参数,把他设成False就可以了。

data = requests.get(url, headers=headers, verify=False)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文