驭空靖 2023-12-09 21:33 采纳率: 75%
浏览 13

Python爬取的图片为什么看不了是什么原因

Python爬取的图片为什么看不了是什么原因,有知道的可以解答一下吗?

img

img

img

  • 写回答

4条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-12-09 21:39
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。
    (讯飞星火专栏,V3.0版本,2023.10.24)


    该回答引用讯飞星火认知大模型,仅提供参考,不保证完全正确
    Python爬取的图片为什么看不了的原因可能有以下几点:

    1. 图片的URL不正确或失效。请检查图片的URL是否正确,以及是否已经过期。
    2. 图片的编码格式不正确。请尝试使用其他编码格式(如UTF-8)进行解码。
    3. 图片文件损坏。可能是由于网络问题或其他原因导致图片文件损坏。
    4. 图片保存路径不正确。请确保图片保存路径正确,并且具有写入权限。
    5. 代码中存在错误。请仔细检查代码中是否存在语法错误、逻辑错误或其他问题。

    针对您提供的代码,我发现了以下问题:

    1. get_alldata函数中,soup = BeautifulSoup(text, features: 'html.parser')这一行缺少了逗号分隔参数。应该修改为soup = BeautifulSoup(text, 'html.parser')
    2. savepath函数中,with open('国漫图片\\'+title1+'.jpg',mode='wb')as fp:这一行中的反斜杠应该改为正斜杠,即/

    修改后的代码如下:

    import re
    import requests
    from bs4 import BeautifulSoup
    import random
    
    if __name__ == "__main__":
        head1 = {
            'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobi'}
        head2 = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WoW64; Trident/7.0; rv:11.0) like Gecko'}
        headers = (head1, head2)
        head = random.choice(headers)
        baseurl = 'https://pic.netbian.com/index.html'
        html_url = get_data(baseurl)
        get_alldata(html_url)
    
    def get_data(html_url):
        """获取网页源代码"""
        for i in range(1, 2):
            respon = requests.get(url=html_url, headers=head)
            # 解码
            respon.encoding = 'gbk'
            text = respon.text
            return text
    
    def get_alldata(text):
        soup = BeautifulSoup(text, 'html.parser')
        all_li = soup.find('ul', class_="clearfix")
        all_li = str(all_li)
        # 找到所有li标签
        all_data = re.findall('<li><a href="(?P<link>.*?)".*?title="(?P<title>.*?)">', all_li)
        for item in all_data:
            link = item[0]
            title = item[1]
            # 拼接最新的url地址获取高清图片
            new_url = 'https://pic.netbian.com/' + link
            # 所有高清图片的连接
            req = requests.get(url=new_url, headers=head)
            req.encoding = 'gbk'
            all_html = req.text
            soup2 = BeautifulSoup(all_html, 'html.parser')
            result = soup2.find_all('div', class_="view")  # 获取图片所在位置
            result = str(result)
            all_Jpg = re.findall('(.*?)"', result)
            for it in all_Jpg:
                all_Hdjpg = it[0]
                title1 = it[1]
                savepath(all_Hdjpg, title1)
                # 保存图片
    
    def savepath(all_Hdjpg, title1):
        # 拼接一下高清图片jpg地址
        all_ling = 'https://pic.netbian.com/' + all_Hdjpg
        img_res = requests.get(url=all_ling, headers=head)
        with open('/国漫图片/' + title1 + '.jpg', mode='wb') as fp:  # 以二进制写入图片
            print('正在保存:', title1)
            fp.write(img_res.content)
    

    请注意,这段代码可能仍然无法正常工作,因为网站结构可能会发生变化。建议您根据实际情况进行调整。

    评论

报告相同问题?

问题事件

  • 修改了问题 12月9日
  • 创建了问题 12月9日