前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >圣诞来临,爬取女神美图放松下

圣诞来临,爬取女神美图放松下

作者头像
周萝卜
发布2019-07-17 15:11:07
4710
发布2019-07-17 15:11:07
举报
文章被收录于专栏:萝卜大杂烩

站在巨人的肩膀上,才能看得更高、更远!

大神徐麟(公众号“数据森麟”)写过一篇爬取懂球帝女神大会数据的文章,非常棒,自己闲来无事,也尝试着做一下。(关键是年尾了,墙裂需要女神们来养养眼)

01.准备

  1. 懂球帝APP一枚(其实可有可无)
  2. Python基础知识(这不废话嘛)
  3. 耐心,耐心,耐心!!!

02.处理API

从巨人(徐麟)的文章中看到了一个宝贝,那就是懂球帝居然有个API可以调用,拿来主义搞一下:

http://api.dongqiudi.com/search?keywords=%E5%A5%B3%E7%A5%9E%E5%A4%A7%E4%BC%9A&type=all&page=1

尝试着在浏览器访问,发现当page等于7的时候就不会返回数据了,所以处理API代码如下

这里的print只是调测时使用的,可以注释掉,这里结果也不贴出来了,比较长。

代码里维护了两个列表nvshen_id_list和nvshen_id_picture都是留待后面使用的。主要获取API里的id和thumb字段,分别存储的是女神HTML页面ID和女神美照。

03.处理页面数据

页面数据的获取及整理还是处理了很久的,因为是循环处理不同的HTML页面,期间还是遇到了一些问题的,先上代码:

KENG1

这个页面是有一个小小的反爬机制的,需要校验cookies和headers,这里用chrome浏览器的F12查看浏览器访问页面时的cookies和headers是怎么样的:

可以看到,cookies还是比较多的,经过测试使用laravel_session里面的cookie是可以的,然后headers添加了User-Agent和Connection两个参数,这样就能正常获取到响应了。

KENG2

因为上面提到的API返回的数据,有一些对我们来说是无用的,所以代码里使用try-except(continue)来处理,当API返回的内容里包含的id并不是我们想要的页面时,代码处理逻辑出错,需要continue下去,循环其他的id页面,继续抓取。

KENG3

因为是循环获取列表nvshen_id_list里的数值,然后拼接成网页,再获取网页信息并处理网页数据,但是这些网页的内容格式不尽相同

,同一套处理逻辑不能完全通用,所以才使用了比较多的if语句来加以判断。比如获取女神评分的时候,很多页面的格式都是不统一的,需要特殊处理下,当时的内心其实是崩溃的

KENG4

最后再来说说get_picture函数,其实思想差不多,封装一个函数就是为了代码简洁一些(虽然这个爬虫代码已经写的很菜了)。

KENG5

最后的最后,还有三位女神没法统一用代码处理

(我是不会承认我菜的

),其实应该是可以同样用代码来处理的,但是因为就三个,索性偷懒啦,不想再写过多的逻辑判断了,自己也觉得没有必要(强行为菜开脱

)。

好了,历尽艰辛,终于整理出了自己想要的数据,下面就把数据保存起来吧。

04. 保存到文件

使用了投票人数作为加权分数

,默认认为投票越多,该女神越受关注,那么相应的分数也要高一些,这样可以避免女神们的分数很多都一样,不好排名的问题。最后文件的内容大概是这样的

04. 终极排名

群众的眼睛是雪亮的,球迷的眼睛那更不用说了。不过话说数据分析才是最最看功力的地方,这里我只是做了简单的处理,其他分析留待以后好好研究吧

不对啊,说好的女神照片呢

,哈哈哈,到生成的女神文件里点链接吧

https://github.com/zhouwei713/dqd_goddess

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萝卜大杂烩 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档