继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

小猪的Python学习之旅 —— 8.爬虫实战:刷某博客站点的访问量

coder_pig
关注TA
已关注
手记 12
粉丝 7102
获赞 99

引言

Python并发的文章还在肝,比较乏味,写个爬虫小脚本玩玩,想起之前
在某博客站点看到,一个人发布的渣渣文章,半个小时不到2W访问量,
还连续几篇都是,然后一个留言或者点赞的都没有,比较多人看的鸿洋
的博客,一篇文章挂了3个月也才1w3的访问量,想想都知道是爬虫刷的,
小猪顿时正义感作祟,忍不住向他们的客服进行了举报,然而石沉大海,
并没有得到任何的回复,不禁感叹,时过境迁,物是人非,唉...

最近偶尔有次点出了排行版,看到了这样的东西???

卖优惠券的都没人管了...卧槽,这还能忍,这样对得起那些
辛辛苦苦肝出一篇技术文章的大佬和萌新吗?

刷访问量脚本谁不会写,而且这个博客站点不用登录就算一次
访问量,写个无限循环,然后换着ip去访问博客就行了。
具体的流程:

  • 1.抓取你博客所有的文章URL存起来;
  • 2.准备一堆代理ip(西刺很多都不行,可以上网买5块2W个高匿代理ip);
  • 3.while True:换着ip,随机访问自己的一篇文章;

是的,就是这么简单,没有任何反爬虫或者惩罚,之前那个人
已经大摇大摆的刷到每篇文章5W多访问量。所以我选择搬到掘金...


1.写一个自己的常用模块

在写简单爬虫的时候,有一些很常用的代码段,比如发起一个
请求,然后获得一个Response;下载图片;读写文件等,其实
都可以写到一个py文件里(有点像Android里的工具类),然后要
用到的时候调用下就可以了,使用的时候import下你的这个模块
然后就可以用了。比如小猪随手写的一个简易模块:

部分代码

这些都可以自己定制,这样你在写爬虫的时候就方便多了。

另外,小猪闲暇没事也会爬点小东西练练手,初学者可以也跟着
试试,相关脚本都丢到我的Gayhub上了,按需自取:

https://github.com/coder-pig/ReptileSomething


2.编写刷访问量脚本

Step 1:获取博客的所有链接

打开:http://blog.csdn.net/coder_pig?viewmode=list
滑动到底部,可以发现有这个东西,要做的就是拿到每一页的
url,然后处理页面拿到所有的文章链接都存起来,然后随手
点开第二页,发现url变成:
http://blog.csdn.net/zpj779878443/article/list/2
所以我们只需拿到总共有多少页就可以了,然后自行拼接URL:

浏览器f12打开Elements,Ctrl+f搜 尾页,直接就定位到了

然后全局搜下这个papelist,发现也是唯一的,接下来好办
了,处理下href,拿到最后的页码:

接着就是看下每个列表页的页面结构,获取所有的文章url,
然后写入到一个文件里了:

就选我们刚刚打开的第二页吧,同样打开:Elements,随手
搜个:小猪浅谈Android屏幕适配,就可以定位到:

然后点结点,翻上去,不难找到:

同样,搜下article_list,同样是唯一的,拿到这个div,然后
获取class='link_title'span,然后拿到里面的a标签就可以了:

执行下这个方法,可以看到目录下生成了csdn_articles_file.txt
点开就可以看到我们所有文章的url了:

第一步完成~

Step 2访问网页

这里就非常简单了,换ip,然后给文章发起请求,你连read()
方法都不用执行,另外,这里还可以添加计数,当返回码为
200的时候,说明是一次顺利的访问,计数+1,代码很简单:

Step 3:执行代码

这里很简单,先判断文章列表文件是否存在,不存在遍历,
然后加载文件里所有的数据到列表,接着While无限循环,
然后random随机取出一个访问即可!

运行后开始计数就说明成功了,打开自己的博客页面放着
过一会在儿再刷新看看访问量是否增加了就知道了:


3.把脚本丢到服务器上跑

自己的电脑总不可能24小时开着是吧,费电,比如我一般下班
就会关电脑,如果想你的脚本可以24小时不间断运行,可以丢
到服务器上,一百来块就可以买个普通的玩玩了,有兴趣自行
百度阿里云,腾讯云虚拟主机之类的。

一般是通过ssh命令链接到我们的远程主机终端

ssh root@主机ip,然后输入下主机密码即可链接

然后你可以通过一些ftp工具把自己的脚本文件丢到
服务器上,然后ssh终端执行下python3 xxx.py就可以了。

但是有个问题是,如果你按了ctrl+c或者关闭了这个ssh终端
你的这个脚本就会停止!所以你需要以后台程序的方式执行
你的这个Python脚本,可以使用nobup命令。
键入这样的命令:

nohup python3 -u xxx.py > xxx.out 2>&1 &

解释下:

  • nohup 和 最后的& 包着的就是让命令在后台执行,比如你直接
    写nohup python3 xxx.py &就可以了
  • > xxx.out 代表将输出信息输出到xxx.out日志文件中
  • 2>&1 将信息变成标准输出,把错误信息也输入到日志文件中
    0代表stdin,1代表stdout,2代表stderr

这样执行后,会返回一个pid(进程id):

然后你可以通过tail命令跟踪日志输出:

tail -f xxx.out

觉得跑得差不多了想停掉程序运行,只需执行下述命令把进程
杀掉,比如kill -9 19267

kill -9 pid

如果忘记了pid也没什么,可以通过下述命令找到:

ps -ef | grep python3

然后kill掉就可以了。另外上面那个执行了8:28分钟的就是
我昨晚睡觉前运行的脚本,tail看一波日志文件:

怒刷31W访问量,这个就不说了...


4.Python3 ssl模块找不到

把脚本丢服务器上,python3执行的时候一直安装不了ssl模块,
真是莫名其妙,pip3 install ssl,死命就是报错,后面搜了
下网上的资料, 先执行下面的两个命令装点东西:

apt-get install openssl
apt-get libssl-dev

装上后还是不行,然后发现是要去改下python3文件夹里的
代码,然后重新make,cd到下面的路径,vim编辑Setup文件:

cd ../../usr/lib/python/Python-3.6.4/Modules 
vim Setup

把对应这个部分的改成下述这个样子,然后esc,键入
:wq保存。

然后一次执行下述命令(如果最后名利提示权限不够,可在make前加-H)

cd ..
sudo ./configure
sudo make
sudo make install

make完后,命令行键入python3,进入到python3 ide,import下ssl
没报错就说明安装成功了!


小结

本节学习了编写自己的模块,编写刷访问量脚本,以及如何把自己的
脚本丢到服务器上以后台程序的方式运行。

其实刷那么多的访问量又有什么用,写博客的初衷就是分享和记录
自己的学习历程,不知何时开始,我们开始热衷于追求所谓的阅读量,
点赞数,评论数,然后各种标题党,鸡汤...现在大多数的人对于短平
快结果立竿见影的事情趋之若鹜,而对需要沉下心长时间积淀的事却
避之而唯恐不及,这可能就是浮躁吧。


本节源码下载

https://github.com/coder-pig/ReptileSomething


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP