吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15743|回复: 76
收起左侧

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

  [复制链接]
天域至尊 发表于 2019-2-21 11:05
本帖最后由 天域至尊 于 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
哦哦,还有发布时间
2副本.jpg
这样一来,几大要素的位置都有了,接下来到源代码里去看
第一个和第二个,类别和标题

我们直接在源代码里ctrl+f搜索,搜索内容先是类别吧,输入编程语言区
4.jpg
我们搜到了3个,其中这个最给力,标题和类别都有了,加上上下文贴到记事本里看下
4.jpg
嗯,真漂亮,为了验证这个规律是不是有通用性,我打开了其他几个区的网页看了下,都一样的具有通用性,也就是说编程语言区是这样,原创发布区也是这样,我就不一一陈述了。
随后开始分析
5.jpg
很容易的发现,div下的class z很明显,但是我们要验证下是不是具有唯一性,意思就是class为z的div标签是不是只会在网页中出现在这里,这个很重要,他能帮我们定位
确认唯一性的方法很简单,源代码里搜索<divclass="z">就好了,如果仅有一个匹配项,那就说明有唯一性,直接用就行,如果不是,还要继续想办法
6.jpg

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

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

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

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

额,还行吧。

接下来获取发布时间
8副本.jpg

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

先上老规矩,搜索2019-2-12 11:44
9副本.jpg

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

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


有两个匹配项,都贴出来看看
10.jpg
第二个是记录上传时间的,算了,还是用第一个。
em id="authorposton23922690"

这个authorposton23922690是什么鬼?在另外一个帖子里搜一搜看看有没有
11.jpg
没有,有种它自己独特编码的感觉哈,那我们回来专门搜索“23922690”试试,看看有没有什么发现。
12副本.jpg


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

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

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

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

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

流程图如下
16.jpg
啦啦啦啦啦,又解决了一个大问题,来吧,开始正题。

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

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

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

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

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

搜一搜,先搜1429
18.jpg

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

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

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


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

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

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

下一个!获取作者名

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

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

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

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

这个是重头戏啦,来来来,看看
23.jpg

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

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

这是开头部分
25.jpg

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

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

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

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

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

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

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

所以,这篇教程,我将会从头讲起,从思路分析到数据库搭建,从爬虫创建到调试通过,全面暴露问题,讲解如何解决,请大家期待吧

点评

我上电视了,我好开心。我要出名了吗?出售亲笔签名,联系1008611,量大价格美丽。  发表于 2019-2-22 13:31

免费评分

参与人数 36吾爱币 +36 热心值 +34 收起 理由
nockystyle + 1 我很赞同!
小成学长 + 1 谢谢@Thanks!
pyq919 + 1 + 1 我很赞同!
hyice134 + 1 + 1 用心讨论,共获提升!
liuliang266 + 1 + 1 热心回复!
redtrilar + 1 + 1 最近在学python 这个帖子有点东西
Mrs + 1 + 1 谢谢@Thanks!
ghoob321 + 1 + 1 我也要上电视。
dahai331 + 1 你号没了(狗头保命)
single1715 + 1 谢谢@Thanks!
ly1306 + 1 + 1 我很赞同!
IMRE + 1 + 1 用心讨论,共获提升!
16685113112 + 1 热心回复!
18872395427 + 1 + 1 谢谢@Thanks!
py看考场 + 1 + 1 用心讨论,共获提升!
虚无的饭 + 1 + 1 胆子大
awenhxw + 1 + 1 用心讨论,共获提升!
maokiss + 1 + 1 这马屁拍的,让老铁们看到置顶的捷径啊!~~哈哈哈~~~
huguo002 + 1 鼓励转贴优秀软件安全工具和文档!
狂暴补师亚丝娜 + 1 + 1 我上电视了,我出名了!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Solem + 1 + 1 别说了,我保存还不行吗 我要这CB有何用
博一笑 + 1 大哥,你文章的颜色看的我眼睛都瞎了,没热心值了,下次补上
p266 + 1 + 1 感谢,所有分都加给你!
AprilCool + 1 + 1 我很赞同!
寻觅背影 + 1 + 1 滴滴学生卡
_小白 + 1 + 1 期待下一课
lxwen + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
盛世开元 + 1 + 1 热心回复!
污到深处自然纯 + 1 + 1 热心回复!
hbsbzb + 1 + 1 谢谢,学习,打卡
原来缘浅丶 + 1 + 1 我很赞同!
Mainos + 2 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
CharlesOWen + 1 + 1 一天就这么点分 全给你加上了!
shamrock. + 1 + 1 为你的胆量点赞!
aabb8532 + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 天域至尊 发表于 2019-2-21 11:08
本帖最后由 天域至尊 于 2019-2-22 13:03 编辑

第二节课地址:https://www.52pojie.cn/forum.php ... ;extra=#pid24125998
狂暴补师亚丝娜 发表于 2019-2-22 13:29
我上电视了,啊,好开心。我要出名了吗?

免费评分

参与人数 2吾爱币 +3 热心值 +1 收起 理由
凉鴂 + 1 我很赞同!
念夕空 + 2 + 1 我很赞同!

查看全部评分

风轻然雨朦胧 发表于 2019-2-21 11:39
aabb8532 发表于 2019-2-21 11:16
火钳刘明,坐等大佬更新学习。
星光醉灿烂 发表于 2019-2-21 11:22
从字里行间就能看出lz是一个不拘一格的老司机啊,感谢分享教程!!等我有分了来评
Richex 发表于 2019-2-21 11:21
建议可以在开头注明用到的工具、技术等相关内容,最好有一个提纲
dj1149 发表于 2019-2-21 11:24
普及一下挺好的,
正好想了解下,吾爱破解的不同等级成员数量分布,不同权限回复量和浏览量的对比。
要不楼主后面的教程参考下?
Ps出来的小赵 发表于 2019-2-21 11:24
不管你如何下手,都没我改个名字来的强。。。
 楼主| 天域至尊 发表于 2019-2-21 11:32
Richex 发表于 2019-2-21 11:21
建议可以在开头注明用到的工具、技术等相关内容,最好有一个提纲

好的,下一课就会讲,我下一课还想好好推荐下VS code
 楼主| 天域至尊 发表于 2019-2-21 11:34
dj1149 发表于 2019-2-21 11:24
普及一下挺好的,
正好想了解下,吾爱破解的不同等级成员数量分布,不同权限回复量和浏览量的 ...

可以,那我就要多获取一个用户组了,但是不同阅读权限的现在没有办法解决,这次是不登录的爬虫,只能获取不登录就能查看的信息。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 01:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表