初见爬虫--第一次练习

爬取目标:http://desk.zol.com.cn/dongman/

效果:

1,壁纸保存到脚本运行目录下的的image的子文件夹(并有合适的命名)内。

2.保存的图片必须以对应标题名和分辨率来命名

3.图片分辨率应该是可选分辨率中最高的。

使用库如下


初见爬虫--第一次练习_第1张图片

根据需求构造函数如下

1.获取etree(对超时情况进行timeout的增加,保证任务顺利进行)


初见爬虫--第一次练习_第2张图片

2.获取每套壁纸名称,网址一级目录,每套张数


初见爬虫--第一次练习_第3张图片


3.获取子目录网址



初见爬虫--第一次练习_第4张图片


4.获取每张图片的地址和分辨率(针对个别不统一的页面进行条件判断)

初见爬虫--第一次练习_第5张图片

5,构造文件名以及文件夹名

初见爬虫--第一次练习_第6张图片


6,创建文件夹(考虑目录已存在的情况)

初见爬虫--第一次练习_第7张图片


7,获取图片并保存(注意到png和jpg图片格式不同,保存之前统一convert成RGB格式)

初见爬虫--第一次练习_第8张图片


最后一步,关联各部分函数得到主函数(部分循环嵌套了一下,偷个懒♪(・ω・)ノ)


初见爬虫--第一次练习_第9张图片


最终效果;

初见爬虫--第一次练习_第10张图片



初见爬虫--第一次练习_第11张图片

实际上总共爬取1.7G的文件竟用了2小时多,为充分利用宽带资源,考虑使用多线程

使用thread模块,将上面主函数改成def  imgPageOut(p),效果是爬取第p页的图片

用math.floor()解决余留页

初见爬虫--第一次练习_第12张图片


看一下效果

初见爬虫--第一次练习_第13张图片



初见爬虫--第一次练习_第14张图片


设置线程数25的情况下,充分利用宽带,提速近10倍


初见爬虫--第一次练习_第15张图片

爬取到的资源完全一致,效果不错!

你可能感兴趣的:(初见爬虫--第一次练习)