持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
教你爬取妹子图之拿下“女神”(一)
前言
前面我们爬取了一个叫做唯美女生的网站,这节我们按照相同的思路爬一下新的网站:秀色女神
收集信息
大家可以自行去目标网站逛一圈看看,怎么看呢,可不是让你盯着妹子一直看,而是要看看要哪些重要的数据。看完之后想必会看到这些数据:
作者
作者也就是妹子本人的信息,对应网站里面就是美女大全和巧遇女神里面,按照网站的可以分为基本信息和分类信息如:
- 基本信息:名字、生日、属相、星座、兴趣、出生地点、简介等
- 分类信息:地域、身材、体征、组合、职业等
- 图集作品
帖子
帖子也就是一组套图,作者的作品,相关信息有:
- 作者信息
- 标题
- 描述
- 图片内容
- 标签
- 分类信息如:着装、风格、体征、场景、地域、机构等
以上就是我们要爬取的目标信息,也是组成这个网站的基本信息。
爬取方法
与上一个网站不同,这个网站的信息比较分散,比如作者的分类信息和帖子的分类信息,这里都是在正在里面是找不到的,所以这里采用的爬取方法就是正文和信息多次爬取的方法
爬取正文
通过美女大全及美女图集中的入口,统一爬取正文,把作者及帖子的基本信息爬取下来
补全信息
通过分类、标签等其他入口补全我们想要的信息。当前通过此入口进入时判断目标图片是否保存进去,如已存在则更新信息,不存在则进行爬取正文
增量方式
在爬取上面分为增量爬取和全量爬取两种方式,全量是直接爬取所有页数的帖子及作者,比如可以同时爬取10页、20页是帖子等,增量则是应对更新的情况,对比网站来说帖子的顺序一定是固定的,且每次更新的数量不会那么多,所以增量的时候就无需那么快,一个一个来就好,只要碰到库里存在的就说明本次更新结束了。
开爬
在爬取之前,先要找到目标信息的元素位置,还是一样,先禁用网页的js加载,此目的有两个,一是看是数据是使用接口动态加载的还是直接是静态页面,二是,禁用js之后可以避免我们看到的元素位置和爬取获取到的元素位置不同的问题
帖子数据
-
标题: 这个难度不大,使用开发者工具的话,直接就可以看到元素就是:
h1::text -
描述:可以看到描述所在的元素位置的div上面的属性的没有规律的,只有一个style,没有class及id等明显标识符,这时我们就要看它的上一级有没有什么明显的标志。我们发现上一级存在一个class,本div存在style属性,所以就可以根据这个条件生成css选择器:
.longConWhite div[style]::text
-
正文,也就是图集:图集是可以支持列表模式及左右翻页的,而且在切换展示形式和左右翻页的时候是没有发生新的网络请求,所以我们断定,图集中的所有图片都存在当前网页中,我们去找一找。找完了,发现图片的元素位置是这里,可以img标签里面元素很多,可以根据class去找,也可以根据父子级关系去找,但这里我们使用id去找,虽然id是不同的,但却都包含imglist_这个字符串,我们就可以根据这个特征去查找:
img[id^="imglist_"]::attr(src),这个写法就是判断id属性以imglist_开头的元素 -
标签:标签和描述同理,根据父级去找:
.poster-nav a::text -
帖子的ID:就是url的最后一段
-
分类标签信息:这个信息不存在与正文中,但是存在顶部导航里面,所有就要手动的把它取出来,然后设置对应关系,这里的帖子分类标签信息选择器为:
#m_album .navigation-down-inner dl
作者数据
-
简介:
.star2-intro-bd p -
基本信息:这里获取基本信息的时候要注意一下,因为我们要获取的信息的零散的,但是在页面上面确是集中的,以表格的形式,且每个字段没有独特的特征,这个我们就要遍历每一个
li标签,然后提取对应的信息,对应的选择器为:.entry-baseInfo-bd li -
分类标签信息: 这个和上面帖子的标签信息同理,需要专门做对应关系,这里的选择器为:
#m_girl .navigation-down-inner dl
编码
欲知编码如何,敬请期待下回分解!!!