首页 编程教程正文

【教程】终于对吾爱下手了,吾爱简单数据爬虫第一课

piaodoo 编程教程 2020-02-22 22:17:05 1519 0 python教程

本文来源吾爱破解论坛

本帖最后由 天域至尊 于 2019-2-21 11:13 编辑

这是第一课
人呐,就不能闲。闲了就难受,刚过情人节就闲的难受,本着好网站,万人爬的基础思想,我打起了爬吾爱站的想法,不知管理看了这篇文章是什么想法?

额,在此声明啊,我是爬爬玩,不是盗取数据。

我想起来了linux社区当年的故事,人家好心给他们提供服务免费搭建linux社区,他们日人家服务器,绿林好汉,惹不起惹不起。吾爱站里估计也都是绿林好汉吧。

其实本次想讲的是通用爬虫,前几次讲的都没有涉及到通用爬虫,通用爬虫对论坛类的网站数据爬取具有奇效,就比如曾经发现过一个成人视频论坛,严重违反我国法律法规,太过分了,为了让网站站长迷途知返,主动改邪归正,我就写了个爬虫去给他服务器增加压力,也顺便固定了他们的犯罪证据,防止以后我找不到种子,呀呸,防止他们案发销毁证据。

我记得爬虫运行的第一晚就获取了7G的种子,我的天,开玩笑呢,再有十个肾也看不完啊,呀呸!怎么着不得判他们好几年啊!但是这个网站还没死,我用它来讲解的话容易导致不怀好意的小朋友去不干好事,等它死了,我就按照那个网站的爬虫再来讲解下通用爬虫,以及获取简介、下载种子、下载介绍图片、按主演和视频类型分类等等技术。

所以这次就用吾爱站来讲通用爬虫吧,其实也超级无聊的,吾爱站的数据有啥好爬的,爬了有啥好处?我至今也没想出来,唯一能够证明的就是我能爬吾爱站的公开数据吧,另外一个就是吾爱站很多数据需要登录才能看到,据说有人训练神经网络能够搞定验证,我还没学到神经网络搞定验证那里,等以后出师了,再搞个神经网络自动验证什么的,如果带上自动登录应该就违反了吾爱的规定吧,这次仅仅是爬取不用登录的数据,而且不爬主要内容,仅仅证明下爱过,管理顺便出来说明下呗。

现在是第一课,主要是思路,不涉及程序,因为篇幅的原因,第二篇将着重讲scrapy框架的搭建和程序的编写,这篇还是以分析和思路为主。

首先第一步,思考你要拿什么数据,随便打开一个帖子,想了半天,总结出以下几点

1.     获取标题
2.     获取类别
3.     获取发布时间
4.     获取查看数与回复数
5.     获取作者名
6.     获取网址
7.     获取作者发布内容长度

肯定有人问了,作者发布内容长度是什么?就是人家作者发帖子的内容的总字节数。获取这玩意干吗?我先获取他内容,再计算总长度,只存储长度,为什么我不存储人家的详细内容呢,存储这个有点盗取数据的意思,我们仅仅是技术层面的教程,不能盗取人家的数据,所以获取个总长度证明下爱过

以https://www.52pojie.cn/thread-864112-1-1.html为例(随机选择的)

1副本.jpg (902.44 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:01 上传


哦哦,还有发布时间

2副本.jpg (861.68 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:02 上传


这样一来,几大要素的位置都有了,接下来到源代码里去看
第一个和第二个,类别和标题

我们直接在源代码里ctrl+f搜索,搜索内容先是类别吧,输入编程语言区

4.jpg (298.37 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:05 上传


我们搜到了3个,其中这个最给力,标题和类别都有了,加上上下文贴到记事本里看下

4.jpg (298.37 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:05 上传


嗯,真漂亮,为了验证这个规律是不是有通用性,我打开了其他几个区的网页看了下,都一样的具有通用性,也就是说编程语言区是这样,原创发布区也是这样,我就不一一陈述了。
随后开始分析

5.jpg (354.08 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:06 上传


很容易的发现,div下的class z很明显,但是我们要验证下是不是具有唯一性,意思就是class为z的div标签是不是只会在网页中出现在这里,这个很重要,他能帮我们定位
确认唯一性的方法很简单,源代码里搜索<divclass="z">就好了,如果仅有一个匹配项,那就说明有唯一性,直接用就行,如果不是,还要继续想办法

6.jpg (113.4 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:08 上传



有两个匹配项,还好不是很多,我们把干扰项也复制出来,看看是什么样子的。

7.jpg (612.41 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:09 上传



这个时候肯定很多大神开始思考xpath表达式怎么构建,其实不用那么麻烦,干扰项有特点
直接把含有违规会员处罚记录字段的项删除不就行了,上面的更简单,截取a标签,最后两个a标签就是

哇,我这样玩是不是不大正规啊,管他呢,简单粗暴最有效!

所以xpath表达式长这样://div[@class=”z”]/a

额,还行吧。

接下来获取发布时间

8副本.jpg (865.31 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:12 上传



网页上这样写的:发表于2019-2-12 11:44
这一步其实很紧张,很有可能不在源代码里,不在源代码里就得用fiddler抓包分析了,你要问我怎么有这种直觉的话,你多写点爬虫也有这种直觉。

先上老规矩,搜索2019-2-12 11:44

9副本.jpg (1.06 MB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:15 上传



我勒个去,竟然在源代码,但是下面的评论数和查看数估计够玄。

为什么呢 ,因为一般评论数、查看数、回复数、时间什么的,都是JS脚本单独向服务器请求的,一般但不是一定。


有两个匹配项,都贴出来看看

10.jpg (102.7 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:19 上传


第二个是记录上传时间的,算了,还是用第一个。
em id="authorposton23922690"

这个authorposton23922690是什么鬼?在另外一个帖子里搜一搜看看有没有

11.jpg (14.79 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:29 上传


没有,有种它自己独特编码的感觉哈,那我们回来专门搜索“23922690”试试,看看有没有什么发现。

12副本.jpg (1.04 MB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:30 上传




我们可以看到这个数字多次出现,而且我们注意到下方评论的编码也很有趣

13.jpg (368.94 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:31 上传



是的,这个编码加上另外一个编码,在此我怀疑“23922690”这个是帖子的编码,但是我们要拿到这个编码,不拿能不能做,也能,但是找点乐趣总是好的。

怎么拿呢?找一个辨识度高的,不容易有干扰的地方

14.jpg (593.53 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:33 上传



看,这个好,页面里只出现了一次,那么具不具有通用性呢,随机选另一个页面打开搜索下

15.jpg (397.63 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:34 上传



具有了通用性,思路
获取table下的id数据,移除pid字段,剩下编号。
构建为authorposton+编号的样子
获取id="authorposton+编号"的em标签
就能拿到数据了

流程图如下

16.jpg (59.86 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:35 上传


啦啦啦啦啦,又解决了一个大问题,来吧,开始正题。

获取编号的xpath表达式://table[@class="plhinres-postfirst"]/@id

获取发表时间的xpath表达式://em[@d="authorposton编号"]/text()

好的,下一个获取查看数与回复数

生命如此多娇,话不多说,干他!

在网页上我们知道,评论数和查看数是

17.jpg (8.17 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:36 上传



搜一搜,先搜1429

18.jpg (135.93 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:37 上传



不得不说爬吾爱是个错误的决定,这也太好爬了吧,我本来想借评论数和回复数讲一下单独的数据请求呢,你给放到了源代码里,这也太……简单了吧。

遗憾,深表遗憾,那下次有机会再讲这个知识点吧,我们老规矩,分析这一段源代码

19.jpg (149.13 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:38 上传



可以清楚的看到是div标签下span存储的数据,看下hm ptn这个类是不是唯一的。

20.jpg (133.21 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:39 上传




我勒个去,唯一的,这不就出来了吗,别拦我,我要报警了,这么简单,打发叫花子呢?

这就很简单了,表达式://div[@class="hm ptn"]/span[@class="xi1"]
获取两个数据,第一个浏览,第二个评论。

遗憾,深表遗憾,好久没有见这么简单的了,唉。

下一个!获取作者名

来来来,我们去看作者名出现在哪里。

21.jpg (30.29 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:41 上传



这是我随便选的文章啊,随机选择的才有通用性,这位大佬,不好意思,借名字一用,恕罪,恕罪。

狂暴补师亚丝娜,我们去源代码里搜索一下。

22.jpg (39.34 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:42 上传



我们很快发现,每楼都有这条数据标记作者或者回复的人,算了,我也不想麻烦了,直接截取第一个吧(这是有风险的
构建表达式://div[@class="authi"]/a[@class="xw1"]/text()
好了,作者名解决了,接下来获取网址,scrapy框架自己就知道网址,这步不用获取。
下一个
获取作者发布内容长度

这个是重头戏啦,来来来,看看

23.jpg (471.64 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:44 上传



开头是:首先,大家如果还没看过之前三篇教程
结尾是:当然, 这只是简单的入门级教程,但是适用大多数直播类型的APP了!!!

好,按照开头结尾去源代码中搜一搜

24.jpg (555.71 KB, 下载次数: 0)

下载附件  保存到相册

2019-2-21 10:45 上传



这是开头部分

25.jpg (175.48 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:45 上传



这是结尾部分,把中间的截出来,算个len就行了
我们继续分析啊
截取开头源代码

26.jpg (99.92 KB, 下载次数: 1)

下载附件  保存到相册

2019-2-21 10:46 上传



细心的我发现了,td标签之下都是内容,而且每楼的开始都一样,但是这个td标签属性的id不同,看看这串数字,是不是很熟悉?嘿嘿,我们一开始不是拿到了这个编号?现在构造下不就好了。
所以表达式为://td[@id=” postmessage_编号”]/text()

好了,至此大功告成。但是上面的思路都对吗?我不敢保证,因为爬虫还没写,这仅仅是提前分析。
这时肯定有小伙伴愤怒的讲:你都没有验证对还是不对,你就讲给我们啊!错了怎么办?

哎,错不怕。我就是要从高高在上的神坛上下来,带大家一步步去分析,出现错误,订正。这是爬虫编写的必经之路!
没有任何一个人能够保证随便给一个网站,他分析了以后爬虫思路完全没错,只不过各个辅导机构,各个老师都提前备好课,上来全是按照对的讲,不会出错误,不会有岔路!你做实验也按照人家讲好的实验做。
按照现有的思路写,没有人教你怎么变换思路,错误了怎么订正,如何准确的修正思路。

这是经验,无法传授。为什么无法传授?传授起来太麻烦了,而对于你工作中遇到某一网站的针对性问题,老师同学没有人愿意给你解答,为什么?
要解答,他们必须要把这个网站爬虫走一遍,为了解答你的一个针对性的问题,去接手你的工作?

没人愿意这样做,没人愿意理你,不在教学内容里,教学内容不可能涵盖全世界所有的网站,你无话可说,但是你不会解决错误。

所谓经验,不过是你把复杂不易讲懂的知识,一遍遍的尝试,失败,自己悟了出来罢了,但是你也实在懒得给别人讲,太麻烦了,没有这个知识,他也能解决很多问题,等他以后自己慢慢悟吧。

所以,这篇教程,我将会从头讲起,从思路分析到数据库搭建,从爬虫创建到调试通过,全面暴露问题,讲解如何解决,请大家期待吧
点评 狂暴补师亚丝娜 我上电视了,我好开心。我要出名了吗?出售亲笔签名,联系1008611,量大价格美丽。  发表于 2019-2-22 13:31

本帖被以下淘专辑推荐: · 编程区新手入门专题|主题: 73, 订阅: 94 · zzzain46私家珍藏|主题: 131, 订阅: 24

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/8105.html

搜索