打造一个壁纸爬虫来爬你的老婆 Akkuman Blog

您现在的位置:文学大全 > 当代诗歌,time:2019-06-12 20:37
上一篇:中考复习方法--综合复习阶段提高成绩策略(化学) 下一篇:打造丝路源点城市 真美汉中焕发新生机

打造一个壁纸爬虫来爬你的老婆  Akkuman Blog

好久没写东西了,随便水一篇文,也是比较简单的东西可能每个喜欢二次元的人都有自己的老婆或者老公吧,之前在朋友那里看到了一个壁纸网站,要是我想要亚丝娜的壁纸,只需要搜索她的英文名Asuna即可看到一千多张有关亚丝娜的壁纸。 壁纸收集爱好者肯定就和我一样想把它们给下载到自己的电脑上幻灯片当作壁纸了,当然手工下载是不可能的,必须写下爬虫,分析下壁纸下载流程。 请求分析首先我们F12打开开发者工具,在一张图上找到下载我们在开发者工具里面取元素,并没有看到下载链接,说明下载链接并没有包含在原始html中,但是点击是可以下载的,并且可以看到整个页面并没有进行刷新,判断是一个ajax请求,直接点进XHR,然后再次点击下载链接可以看到请求。

可以看到这个请求返回了一个链接,我们直接访问链接,发现是可以下载的,说明这就是下载链接了,那么这个链接是怎么来的呢?我们看看请求,这个post请求里面有一些参数,我们先不去考虑这些参数怎么来的,我们先模拟一下请求看看请求Header里面有没有什么东西是必须的,这里直接上postman或者curl都可以,如果你的机器上面安装了curl我推荐用这个,因为Chrome开发者工具,直接可以在请求上右键CopyascURL,直接可以帮你复制出curl命令,我这里复制出来是这样的我们先去掉不必要的东西curlhttps:///get_download__id=533007type=pngserver=images8user_id=79150,直接执行,发现可以获取到地址,所以现在要考虑的只有这些参数是怎么来的了,下面我同样放一张postman的图,可以看到是同样的可以获取到下载链接这些参数我们从两方面考虑,一是用js算出来的,一个就是在html中存在的。 我们首先在html里找找看有没有。

通过关键字搜索页面html,我们可以找到每一张图都有一串类似于下面的属性和上面的post参数是一一对应的。

所以爬取思路就出来了。

访问一个页面,取到每一个图的特定属性,然后构造post请求得到下载地址,然后访问地址下载图片那新问题是如果进行翻页并且判断是否到了最后一页。 我们可以发现页数是通过get的网址决定的,https:///=asunapage=10,更改page后面的值即可。 判断是否到了尾页,我们可以打开最后一页,然后查看一下html,我们可以看到下一页按钮的链接已经变成了aid=next_pagehref=#Nextnbsp;#62;/a·,那我们就可以根据href的值是否为#来判断了。 Python库的选择唯一用到的第三方库就是Requests,以前解析html的Dom树喜欢用BeautifulSoup,但是后来发现解析速度上确实和re有很大差距,并且当html有很特殊的字符时会又是莫名出错,故工程量不大的情况下,我现在还是优选正则。

代码requestsreossys:,:,:proxiesdownload_dirdownloaded_(download_dir):open(%(download_dir,name,pic_type),)f:.format(downloaded_num,total,name,pic_type)):proxies:wallpaper_id,:wallpaper_type,:server,:user_id,,data=post_data,proxies=proxies):proxiestotal)):%((),page_num),proxies=proxies)nextpage_link==:)page_num==:,r_).group())%(keyword,total))itemp_(r_):]]]]nextpage_()==:)__name__==:len()len():len()==:])])):]))多说的里面我用了下本机的代理,懂的人自然懂,主要是因为直连下载确实有点慢。

另外自己懒,本来就是临时十多分钟写的一个脚本,就懒得加多线程了。 自己发了个无声视频,也就是对我讲解中的演示,需要的可以看这里。


编辑推荐

友情链接