吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9686|回复: 11
收起左侧

[Python 转载] 爬虫批量下载今日头条的图片

[复制链接]
跳墙的爷 发表于 2018-12-19 10:33
逛今日头条,发现有些好的图片想搜藏,作为刚学python的小白,立即实践,用正则写了个简单的脚本,自动在桌面创建文件夹,下载头条文章里面的图片。
使用方法:1、只用填写网址url。2、填写下载文件夹路径及名称path。3、运行

头条图片存在两种形式,一种是单网页帖子里的图片,另外一种是幻灯片形式的图片集,分别对应两份代码。

------------------------------------------分隔符----------------------------------------
下载实例
1.jpg
2.jpg

3.jpg
4.jpg


------------------------------------------分隔符----------------------------------------
单网页帖子里的图片下载
[Asm] 纯文本查看 复制代码
import urllib.request
import re
import urllib.error

#添加安装opener()为全局,伪装浏览器报头
headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")     #根据浏览器填写
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)

#填写参数
url = "https://www.toutiao.com/i6489288219677442574/"      #网页爬取地址
pat = 'http://(.*?)"'    # 图片地址正则表达式
path = "E:/桌面/情侣头像/"   #存储目录,注意需要先创建好文件夹
hp = 'http://'  #图片地址构造部分,若无则填写''

#创建下载文件夹
def mkdir(path):
    import os

    folder = os.path.exists(path)
    if not folder:                   #判断是否存在文件夹如果不存在则创建为文件夹
        os.makedirs(path)            #makedirs 创建文件时如果路径不存在会创建这个路径
        print ("---  文件夹创建成功  ---\n")
    else:
        print ("---  文件夹已存在!  ---\n")

mkdir(path)             #调用函数


#获取网页中图片地址数据
def get_data(url,pat):
    html = urllib.request.urlopen(url)  #打开网页
    data = html.read().decode("utf-8","ignore")        #获取网页数据
    # print(len(data))    #测试用
    html.close() #网页关闭,否则会出现意想不到的问题
    imglist = re.compile(pat).findall(data)       #搜索图片地址,存在列表imglist中
    # print(len(imglist))   #测试用
    # print(imglist)    #测试用
    return imglist

#获取图片(存储路径,图片地址构造)
def get_img(path,hp):
    imglist = get_data(url,pat)   #调用上方数据函数,注意这里需要使用imglist=调用函数,否则显示for----中 的imglist未定义
    # imglist = re.compile(pat).findall(data)       #搜索图片地址,存在列表imglist中
    for i in range(0,len(imglist)):     #爬取每一个图片
        try:
            imgurl = hp + imglist[i]
            # print(imgurl)   #测试用

            file = path + str(i) + ".jpg"      #创建本地目录
            
            urllib.request.urlretrieve(imgurl,filename = file)        #下载到本都,文件名为file
            print("第" + str(i) + "个爬取---成功")
        
        except urllib.error.URLError as er:
            if hasattr(er,"code"):
                print(er.code)
            if hasattr(er,"reason"):
                print(er.reason)
        except Exception as e:
            print(e)

get_img(path,hp)    #调用函数

print("\n---  结束  ---")


------------------------------------------分隔符----------------------------------------
幻灯片形式的图片集
[Asm] 纯文本查看 复制代码
import urllib.request
import re
import urllib.error

#添加安装opener()为全局,伪装浏览器报头
headers = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36")     #根据浏览器填写
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)

#填写参数
url = "https://www.toutiao.com/i6460804345263817230/"      #网页爬取地址
pat = r'uri\\":\\"origin\\\\/(.*?)\\",\\"height'    # 图片地址正则表达式     原表达式为,uri\":\"origin\\/(.*?)\",\"height,李荣r''进行其中\需要转义,即\\代表\,r为转义方法
path = "E:/桌面/人民币景点/"   #存储目录,注意需要先创建好文件夹
hp = 'http://p99.pstatp.com/origin/'  #图片地址构造部分,若无则填写''

#创建下载文件夹
def mkdir(path):
    import os

    folder = os.path.exists(path)
    if not folder:                   #判断是否存在文件夹如果不存在则创建为文件夹
        os.makedirs(path)            #makedirs 创建文件时如果路径不存在会创建这个路径
        print ("---  文件夹创建成功  ---\n")
    else:
        print ("---  文件夹已存在!  ---\n")

mkdir(path)             #调用函数


#获取网页中图片地址数据
def get_data(url,pat):
    html = urllib.request.urlopen(url)  #打开网页
    data = html.read().decode("utf-8","ignore")        #获取网页数据
    # print(len(data))    #测试用
    # print(data)
    imglist = re.compile(pat).findall(data)       #搜索图片地址,存在列表imglist中
    # print(len(imglist))   #测试用
    # print(imglist)    #测试用
    html.close() #网页关闭,否则会出现意想不到的问题
    return imglist

#获取图片(存储路径,图片地址构造)
def get_img(path,hp):
    imglist = get_data(url,pat)   #调用上方数据函数,注意这里需要使用imglist=调用函数,否则显示for----中 的imglist未定义
    # imglist = re.compile(pat).findall(data)       #搜索图片地址,存在列表imglist中
    for i in range(0,len(imglist)):     #爬取每一个图片
        try:
            imgurl = hp + imglist[i]
            # print(imgurl)   #测试用

            file = path + str(i) + ".jpg"      #创建本地目录
            
            urllib.request.urlretrieve(imgurl,filename = file)        #下载到本都,文件名为file
            print("第" + str(i) + "个爬取---成功")
        
        except urllib.error.URLError as er:
            if hasattr(er,"code"):
                print(er.code)
            if hasattr(er,"reason"):
                print(er.reason)
        except Exception as e:
            print(e)

get_img(path,hp)    #调用函数

print("\n---  结束  ---")



免费评分

参与人数 5吾爱币 +5 热心值 +4 收起 理由
lmt19841123 + 1 + 1 打个包分享一下啊
苏紫方璇 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yue_tai_mei + 1 老哥,能分享个教程不?我也想学习下
Codeman + 1 + 1 我很赞同!
tgbedc2580 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

执念i_ 发表于 2018-12-19 10:43
来了老弟!感谢分享
nice小萌萌 发表于 2018-12-19 10:53
NSNSDHS 发表于 2018-12-19 11:04
GGyx4 发表于 2018-12-19 11:06
刚好昨天看了一个新闻,说TB上有人卖各种图片。看来会写代码的人会省不少钱啊。
quwujin 发表于 2018-12-19 11:15
报错了
远程主机强迫关闭了一个现有的连接
噜冰花 发表于 2018-12-19 11:18
写个大众点评的采集不知道和这个原理一样不
myang 发表于 2018-12-19 11:22
谢谢分享。。。。。
UC大法好 发表于 2018-12-19 11:47
感谢分享,学习了
被掏了心的洋葱 发表于 2018-12-19 14:05
加个好友?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 00:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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