这篇文章主要介绍python如何实现壁纸批量下载,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
前言
好久没有写文章了,因为最近都在适应新的岗位,以及利用闲暇时间学习python。这篇文章是最近的一个python学习阶段性总结,开发了一个爬虫批量下载某壁纸网站的高清壁纸。
注意:本文所属项目仅用于python学习,严禁作为其他用途使用!
初始化项目
项目使用了virtualenv <代码> 代码>来创建一个虚拟环境,避免污染全局。使用<代码> pip3> 代码直接下载即可:
pip3 install virtualenv
然后在合适的地方新建一个<代码> wallpaper-downloader 代码>目录,使用virtualenv <代码> 代码>创建名为<代码> venv> 代码的虚拟环境:
virtualenv venv 只venv/bin/激活
接下来创建依赖目录:
echo bs4 lxml requests 在需求。txt
最后云下载安装依赖即可:
pip3 install -r 让
分析爬虫工作步骤
为了简单起见,我们直接进入分类为“航空”的壁纸列表页:http://wallpaperswide.com/aer...。
可以看的到,这一页里面一共有10张可供下载的壁纸。但是由于这里显示的都是缩略图,作为壁纸来说清晰度是远远不够的,所以我们需要进入壁纸详情页,去找到高清的下载链接。从第一张壁纸点进的去,可以看到一个新的页面:
因为我机器是视网膜屏幕,所以我打算直接下载体积最大的那个以保证高清(红圈所示体积)。
了解了具体的步骤以后,就是通过开发者工具找到对应的dom节点,提取相应的url即可,这个过程就不再展开了,读者自行尝试即可,下面进入编码部分。
访问页面
新建一个<代码>下载。py 代码>文件,然后引入两个库:
得到bs4 import BeautifulSoup import 请求
接下来,编写一个专门用于访问url,然后返回页html的面函数:
def visit_page (url): ,headers =, { & # 39;才能用户代理# 39;:,& # 39;Mozilla/5.0, (Macintosh;, Intel Mac OS X 10 _13_1), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/63.0.3239.108 Safari/537.36 & # 39; ,}=,,r  requests.get (url, headers =,标题)=,r.encoding & # 39; utf - 8 # 39;=,,soup  BeautifulSoup (r.text, & # 39; lxml # 39;) 汤,return 
为了防止被网站反爬机制击中,所以我们需要通过在头添加UA把爬虫伪装成正常的浏览器,然后指定utf - 8编码,最后返回字符串格式的html。
提取链接
在获取了页面的html以后,就需要提取这个页面壁纸列表所对应的url了:
def get_paper_link(页面):=,,links  page.select (& # 39; # content 祝辞,div 祝辞,ul 祝辞,li 祝辞,div 祝辞,div 一个# 39;)=,collect [] ,for link 拷贝链接: collect.append才能(link.get (& # 39; href # 39;)) 以前,return 收集>这个函数会把列表页所有壁纸详情的url给提取出来。
下载壁纸
有了详情页的地址以后,我们就可以进去挑选合适的大小了。在对页面的dom结构分析后可以知道,每一个尺寸都对应着一个链接:
所以第一步,就是把这些大小对应的链接提取出来:
wallpaper_source =, visit_page(链接) 时间=wallpaper_size_links wallpaper_source.select (& # 39; # wallpaper-resolutions 祝辞,一个# 39;) 时间=size_list [] for link  wallpaper_size_links拷贝:=,,href  link.get (& # 39; href # 39;) ,size_list.append ({ & # 39;才能大小# 39;:,eval (link.get_text () .replace (& # 39; x # 39;,, & # 39; * & # 39;)), & # 39;才能名字# 39;:,href.replace(& # 39;/下载/& # 39;,,& # 39;& # 39;), & # 39;才能url # 39;: href 之前,})><代码> size_list> 代码就是这些链接的一个集合。为了方便接下来选出最高清(体积最大)的壁纸,在<代码> 代码>中大小我使用了<代码> eval 代码>方法,直接把这里的
python如何实现壁纸批量下载