Maison > Article > développement back-end > Partagez un exemple de didacticiel sur l'utilisation de Python pour augmenter les pages vues
本篇文章主要介绍了Python 自动刷博客浏览量实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
思路来源
今天很偶然的一个机会,听到别人在谈论现在的“刷量”行为,于是就激发了我的好奇心。然后看了下requests模块正好对我有用,就写了一个简单的测试用例。神奇的发现这一招竟然是管用的。那还等什么,开刷咯。
前奏
思路很简单,就是一个发送请求的实现,就可以了。代码如下:
headers = { 'referer':'www.php.cn', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36' } def getHtml(url,headers): req = urllib2.Request(url,headers=headers) page = urllib2.urlopen(req) html = page.read() return html
我们手动的添加一下目标url以及一个headers就可以了。我自然的会用自己的做下测试咯。
代码试着运行了一下,确实是可以增加浏览量滴。
慢增长
既然这样的方案是可行的,那就说明思路是正确的了。于是我们自然会想到写一个循环吧。这样不就能实现大量的浏览的增加了吗?
是的,我确实是这样干的。代码如下:
i= 0 while i < 10: url = 'jb51.net/marksinoberg/article/details/51501377' getHtml(url,headers)
刚开始的时候,可以明显的看到博客数量的增加,(^^) 嘻嘻……初见成效咯。但是好景不长,我发现浏览量增加了10次之后。就呵呵了。
然后就不能增加了,估计是服务器对我这个访问做了一定的限制了,否则按理说应该是可行的。
想方设法对坑
俗话说“上有政策,下有对策”,我自然不能受这个约束啊,于是我就猜想是对我的IP进行了记录。然后对我的访问次数添加了一些限制。
我的解决办法:
代理IP进行访问:但是考虑到没有服务器,所以代理不了IP进行访问了。
改变IP:既然是这样,那我就想办法改变自己的ip来进行访问呗。那么怎么改变自己的IP呢?(现在想想好后悔,当时计算机网络没有好好听课,IP欺骗没有学好,否则现在不就可以用了嘛)。但是条条大路通罗马嘛,我还有其他的方法。如下:
C:\Users\Administrator>ipconfig /release
Windows IP 配置
不能在 本地连接 上执行任何操作,它已断开媒体连接。
无线局域网适配器 无线网络连接:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::1d9f:d97b:fd16:1f6f%
默认网关. . . . . . . . . . . . . :
以太网适配器 本地连接:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . : OurEDA.cn
以太网适配器 VMware Network Adapter VMnet1:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::359d:e81d:741:f257%1
IPv4 地址 . . . . . . . . . . . . : 192.168.229.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
以太网适配器 VMware Network Adapter VMnet8:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::94b1:d10f:b68:101d%1
IPv4 地址 . . . . . . . . . . . . : 192.168.244.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
以太网适配器 VirtualBox Host-Only Network:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::a5eb:545c:7d89:9451%
IPv4 地址 . . . . . . . . . . . . : 192.168.56.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
隧道适配器 isatap.{4F399971-B739-4B71-BD79-E48233EEC9BE}:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
隧道适配器 isatap.{1860C94E-1007-4418-9A26-7D8AA8F06E15}:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
隧道适配器 isatap.OurEDA.cn:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
隧道适配器 isatap.dlut.edu.cn:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
隧道适配器 isatap.{6F7F27ED-942E-4EFB-ACF2-A4E8793B161D}:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
C:\Users\Administrator>ipconfig /renew
Windows IP 配置
不能在 本地连接 上执行任何操作,它已断开媒体连接。
无线局域网适配器 无线网络连接:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::1d9f:d97b:fd16:1f6f%12
IPv4 地址 . . . . . . . . . . . . : 192.168.58.70
子网掩码 . . . . . . . . . . . . : 255.255.252.0
默认网关. . . . . . . . . . . . . : 192.168.56.1
以太网适配器 本地连接:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . : OurEDA.cn
以太网适配器 VMware Network Adapter VMnet1:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::359d:e81d:741:f257%14
IPv4 地址 . . . . . . . . . . . . : 192.168.229.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
以太网适配器 VMware Network Adapter VMnet8:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::94b1:d10f:b68:101d%15
IPv4 地址 . . . . . . . . . . . . : 192.168.244.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
以太网适配器 VirtualBox Host-Only Network:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::a5eb:545c:7d89:9451%16
IPv4 地址 . . . . . . . . . . . . : 192.168.56.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
隧道适配器 isatap.{4F399971-B739-4B71-BD79-E48233EEC9BE}:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
隧道适配器 isatap.{1860C94E-1007-4418-9A26-7D8AA8F06E15}:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
隧道适配器 isatap.OurEDA.cn:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
隧道适配器 isatap.dlut.edu.cn:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
隧道适配器 isatap.{6F7F27ED-942E-4EFB-ACF2-A4E8793B161D}:
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 DNS 后缀 . . . . . . . :
是的,想必大家都看到了。核心的两个命令就是
// 更改路由表的配置 ipconfig / release // 释放网络, ipconfig /renew // 重新分配IP
这样基本上对于改变自己的IP是有点效果的。尤其是对局域网用户而言。
所以,我只需要在Python代码中调用系统的cmd命令,就可以动态的改变自己的IP了。也就达成了我的需求了
难题
虽然IP的问题解决了,但是这样刷的话,还是太慢。因为路由表的更新时需要时间的。而这和代码运行的速度比起来,真的是太慢太慢了。而且每次只能刷出十个浏览量,额。确实是比较的尴尬啊。费了这么大的劲,才刷了十个浏览量。怎么解决这个问题呢?
我其实也没有真正的解决这个问题,但是我发现这个限制也是不特别的强,因为我中途吃了个饭,回来的时候就发现原来的IP又可以刷了。大概45分钟左右的间隔吧!这是个突破点。
源码
其实思路很简单,就是想方设法的针对问题解决问题。不管对方的系统多么的坚固,也不可能是天衣无缝,总会有一种解决的办法的。下面是代码。
# coding:utf-8 # author = 'Mark sinoberg' # date = '2016/5/26' # Desc = 测试测试 刷新自己的博客的浏览量 import urllib2,re from bs4 import BeautifulSoup def getHtml(url,headers): req = urllib2.Request(url,headers=headers) page = urllib2.urlopen(req) html = page.read() return html def parse(data): content = BeautifulSoup(data,'lxml') return content def getReadNums(data,st): reg = re.compile(st) return re.findall(reg,data) url = 'http://jb51.net/marksinoberg/article/details/51493318' headers = { 'referer':'http://jb51.net/', 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36' } i = 0 while i<24: html = getHtml(url,headers) content = parse(html) result = content.find_all('span',class_='link_view') print result[0].get_text() i = i +1
代码运行结果:
D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/ulib2/AddWatcher.py 94人阅读 95人阅读 96人阅读 97人阅读 98人阅读 99人阅读 100人阅读 101人阅读 102人阅读 103人阅读 104人阅读 105人阅读 106人阅读 107人阅读 108人阅读 109人阅读 110人阅读 111人阅读 112人阅读 113人阅读 114人阅读 115人阅读 115人阅读 115人阅读 Process finished with exit code 0
比较好的地方就是使用了BeautifulSoup抓取了特定位置的数据,这里是对浏览量的抓取。从上面的结果也可以看出,一个IP抓取的数据量是有限制的,一般来说是10~30个,这里貌似是22次访问。
展望
其实我是可以做到一次运行多次刷新的效果的,但是这样做不是特别的正派,所以我就说一下自己的思路吧。
Portez un jugement sur le résultat (vues du résultat). Lorsque deux résultats consécutifs sont cohérents, démarrez python et exécutez la commande cmd pour mettre à jour votre IP. Mais c'est une opération qui prend du temps. Vous pouvez le mettre dans un fil de discussion
puis explorer votre propre interface de liste de blogs pour obtenir tous vos articles de blog. Bien entendu, une connexion simulée est évidemment utilisée ici. Augmentez ensuite le volume de chaque blog. Bien que cela ne résout pas vraiment le problème, cela aura un bon effet si un peu s'ajoute.
Créez un fil de discussion qui actualise régulièrement le volume et actualisez-le toutes les XX fois. En fin de compte, un article peut probablement générer des centaines de visites. (Je ne l'ai pas essayé et je ne sais pas)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!