鱼C论坛

 找回密码
 立即注册
查看: 1042|回复: 2

[已解决]关于爬取到的图片不能打开

[复制链接]
发表于 2020-7-27 15:38:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求助!我在第一次运行时运行正常,并且图片可以下载,但是却说不支持此格式。第二次我再运行时,下载下来的图片都是0kb了,搞不清楚为什么
import requests
import urllib.request
import re
import os


def open_url(url):
    headers = {'User-Agent':
               'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
    html = requests.get(url, headers = headers)
    print(html.status_code)
    html = html.text
    return html


def get_img(html):
    p = re.compile(r"<img src='(.*?.jpg)'", re.S)
    img_list = re.findall(p, html)
    print(img_list)
    # print(type(html))
    save(img_list)


def save(img_list):
    for each in img_list:
        filename = each.split("/")[-1]
        with open(filename,'wb')as fp:
            img = open_url(each)
            print(type(img))
            img = img.encode(encoding = 'utf-8')
            #fp.write(img)
            #print(img)


def mk_file():
    os.chdir('C:/Users/巴鲁斯/Desktop/小美')


if __name__ == '__main__':
    url = 'https://www.xcar.com.cn/bbs/viewthread.php?tid=90672604&zoneclick=104603'
    mk_file()
    get_img(open_url(url))
最佳答案
2020-7-27 15:53:17

改成这样,你 爬图片要用 html.content 二进制读取,而不是 .text 读取文本
import requests
import urllib.request
import re
import os


def open_url(url):
    headers = {'User-Agent':
               'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
    html = requests.get(url, headers = headers)
    print(html.status_code)
    return html


def get_img(html):
    p = re.compile(r"<img src='(.*?.jpg)'", re.S)
    img_list = re.findall(p, html.text)
    print(img_list)
    # print(type(html))
    save(img_list)


def save(img_list):
    for each in img_list:
        filename = each.split("/")[-1]
        with open(filename,'wb')as fp:
            img = open_url(each)
            print(type(img))
            img = img.content
            fp.write(img)
            #print(img)


def mk_file():
    os.chdir('.')


if __name__ == '__main__':
    url = 'https://www.xcar.com.cn/bbs/viewthread.php?tid=90672604&zoneclick=104603'
    mk_file()
    get_img(open_url(url))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-27 15:53:17 | 显示全部楼层    本楼为最佳答案   

改成这样,你 爬图片要用 html.content 二进制读取,而不是 .text 读取文本
import requests
import urllib.request
import re
import os


def open_url(url):
    headers = {'User-Agent':
               'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
    html = requests.get(url, headers = headers)
    print(html.status_code)
    return html


def get_img(html):
    p = re.compile(r"<img src='(.*?.jpg)'", re.S)
    img_list = re.findall(p, html.text)
    print(img_list)
    # print(type(html))
    save(img_list)


def save(img_list):
    for each in img_list:
        filename = each.split("/")[-1]
        with open(filename,'wb')as fp:
            img = open_url(each)
            print(type(img))
            img = img.content
            fp.write(img)
            #print(img)


def mk_file():
    os.chdir('.')


if __name__ == '__main__':
    url = 'https://www.xcar.com.cn/bbs/viewthread.php?tid=90672604&zoneclick=104603'
    mk_file()
    get_img(open_url(url))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-27 16:02:28 | 显示全部楼层
Twilight6 发表于 2020-7-27 15:53
改成这样,你 爬图片要用 html.content 二进制读取,而不是 .text 读取文本

谢谢,明白了,以后会注意
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 17:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表