最近几天在玩贴吧,不知道大家和我有没有相同的经历,本来到贴吧去问个问题啊,或者去发点教程贴,然后就石沉大海,没有一个人回复。主要是别人的帖子都有人去顶,然后看得人就多了,也就有人去回复,交流了。
但是,小编的帖子也不是不行啊,怎么总是没人看,于是乎,我决定自己来给自己顶一顶。用什么呢?当然是用Python了。
我先用了火狐的开发者工具去分析这个发帖的规则,后来发现里面太过于复杂,而且有防止机器人顶帖的东西。
用开发者工具看到的东西
里面的参数太多了,而且还有加密,解码等等好多问题,这只是两个ajxs,但是里面的信息你需要到前面十几个请求里面去找,还不一定找得到。没办法,我只好求助另外一个工具了-------selenium。
这是用于web自动化测试的一个工具,但是爬虫也是一样滴,而且web自动化甚至都可以算作爬虫的一个方向而已,反正都跟网络有关系。
很多人一看到又有一个新的模块,很方,我告诉你,和爬虫里面学的东西没啥两样。下面一步一步来看。
先把我们想要顶的帖子的网址找出来,然后模拟去请求这个网址。
然后,我们会发现自己是处于没有登陆的状态,无法发帖,那么接下来做什么?肯定是登陆啊(这里肯定有人要骂小编的智商了,这不明显的事吗?)
恩,确实明显但是还是要讲一下滴!在selenium这个模块中,我们想要输入登陆的账号和密码,首先需要定位这个元素。
实现了登陆,那么我们该要去发帖了。怎么做?先要获取输入框的位置,然后去输入。
我这个是通过在浏览器里面执行js代码来获取输入框的位置,然后填充我想要输入的内容进去的,为什么要用js,用自带的定位不好吗?其实,大家可以去试一下,这里有个小坑(大家可以评论留言,我会帮大家解决的~~)。
我们输入什么内容呢?这个我也很纠结啊,每次输入一样的东西吧,没啥意义,而且容易被封,于是,我去爬了一个全部是诗文的网站,这个用requests库就可以了,比较requests库还是很方便很强大的。然后我加入了一些时间进去,这样算是一个标记,看着舒服点。
结果是怎么样的呢?请看:
就是这样的效果了
中间那一段是刚刚给你们写素材的时候发的,毕竟底下也没啥了,所以提醒一下。是不是很牛批。
但是你们也发现了,这个放在电脑上是要一直运行着的,很麻烦,于是,我把它放在了我的服务器上面运行,隔个5到20分钟就会发一个贴子。(大家如果对于无界面环境如何部署有问题的话,也可以在评论区留言哦~~)