Python爬虫之高清壁纸下载
来源:互联网 发布:拉菲时时彩源码 编辑:程序博客网 时间:2024/05/16 18:13
Python爬虫之高清壁纸下载
今天发现了一个非常不错的壁纸网站https://unsplash.com/,高清非常适合做壁纸,我已经受够自己电脑桌面的那么几张壁纸了,于是准备把它们都给爬下来。
Step 1:分析页面
首先打开网站https://unsplash.com/,高清又漂亮的壁纸就呈现在眼前了,页面没有“下一页”,向下滑动页面发现新的图片不断被加载出来,这个过程显然是动态完成的。
于是,打开Chrom浏览器,F12进入开发者工具,抓取页面请求。机智的我发现它们是这样请求图片数据的。
同时,还可以发现url提交的参数中包含了当前页page,每一页显示的图片数per_page以及图片显示顺序order_by,因此想抓取下一页只要在page的值上做改变就可以了。OK,分析完毕可以开抓了。
Step 2:页面抓取
采用多线程爬虫,页面抓取线程负责对页面进行抓取,解析页面返回的Json数据,将每一页的图片url存储在队列中,图片下载线程负责从队列中取出待下载图片的url进行下载,以下是代码部分
定义一些必要的变量
pictures = Queue()#待下载图片url队列headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests':'1', 'authorization':'Client-ID d69927c7ea5c770fa2ce9a2f1e3589bd896454f7068f689d8e41a25b54fa6042', 'x-unsplash-client':'web'}session = requests.session()session.headers.update(headers)#更新Http请求头
页面抓取线程:
class wallPaperScracher(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.url = '' self.cur_page = 1 self.pics_pattern = re.compile(r'"download":"(.*?)"',re.S) def getPicture(self): while self.cur_page <= 15: self.url = 'https://unsplash.com/napi/photos/curated?page=' + str(self.cur_page) +'&per_page=12&order_by=latest' res = session.get(self.url) json = res.content pics = re.findall(self.pics_pattern, json) for url in pics: print('第%d页,正在存储图片%s' % (self.cur_page,url)) pictures.put(url) self.cur_page += 1 pictures.put(None)#标志结束 def run(self): self.getPicture()
图片下载线程:
class picDownloader(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.pattern = re.compile(r'photos/(.*?)/') def downloadPic(self): while True: pic_url = pictures.get() if not pic_url:#取到None则停止下载 break pic_name = re.search(self.pattern, pic_url).group(1) f = open('E:\\HDPhoto\\' + pic_name + '.jpg', 'wb') res = session.get(pic_url) print('正在下载图片 : %s' % pic_url) f.write(res.content) def run(self): self.downloadPic()
主函数:启动三个下载线程
scracher = wallPaperScracher() scracher.start() for i in range(3): downloader = picDownloader() downloader.start()
好了,代码搞定。坐等图片…,有新壁纸喽!
0 0
- Python爬虫之高清壁纸下载
- python爬虫之壁纸的下载
- Python爬虫入门-scrapy爬取唯一图库高清壁纸
- python爬虫----图片爬取之高清原图
- 高清壁纸大全:2013年桌面日历壁纸免费下载
- 精美高清壁纸:2013年1月桌面日历壁纸免费下载
- Python爬虫入门-python之爬取pexels高清图片
- python批量下载壁纸
- 《人再囧途之泰囧》高清下载
- android 高清壁纸设置慢
- Python爬虫之下载媒体文件
- 爬虫下载壁纸,并设置壁纸自动切换
- Python爬虫实战二:下载百度贴吧帖子内的壁纸
- 《一九四二》高清下载
- 笑傲江湖高清下载
- 1号小爬虫:普通的爬虫,下载百度壁纸
- 美女图片桌面高清壁纸1280*800
- 推荐5款免费的高清壁纸
- LightOJ1282 Leading and Trailing 大数取首尾
- OpenCV与Socket实现树莓派获取摄像头视频至电脑
- 从尾到头打印链表
- java list 迭代中能否删除?
- MacbookPro OS X EI Captain下编译Chrome源代码
- Python爬虫之高清壁纸下载
- python正则表达式re模块详细介绍
- python基础知识
- vijos P1102陶陶摘苹果
- 两种排序方法(字典序,strcmp的用法)----网易2017内推笔试编程题合集(二)
- 创建博客-博客文章
- 视频播放器底层框架解析
- 实战开发农商O2O在线交易系统—架构及数据库设计
- 图的表示(整合)