Maison >développement back-end >Tutoriel Python >Python implémente le partage automatique de l'expérience de navigation sur les blogs
Cet article présente principalement l'exemple de code Python pour brosser automatiquement les vues du blog. L'éditeur pense que c'est plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil.
Source d'idées
Aujourd'hui, par hasard, j'ai entendu d'autres parler du comportement actuel de « flushing », alors j'ai piqué. ma curiosité. Ensuite, j'ai regardé le module de requêtes et cela m'a été utile, j'ai donc écrit un cas de test simple. Miraculeusement, j'ai découvert que cette astuce fonctionnait réellement. Alors qu’attendez-vous pour commencer le brossage.
Prélude
L'idée est très simple, juste une implémentation de l'envoi d'une requête, c'est tout. Le code est le suivant :
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' } def getHtml(url,headers): req = urllib2.Request(url,headers=headers) page = urllib2.urlopen(req) html = page.read() return html
Nous ajoutons simplement manuellement l'URL cible et un en-tête. Naturellement, j'utiliserai le mien pour le tester.
J'ai essayé d'exécuter le code et cela peut effectivement augmenter le nombre de vues.
Croissance lente
Puisqu'un tel plan est réalisable, cela signifie que l'idée est correcte. On pense donc naturellement à écrire une boucle. Cela ne permettrait-il pas d’augmenter massivement la navigation ?
Oui, c’est exactement ce que j’ai fait. Le code est le suivant :
i= 0 while i < 10: url = 'http://jb51.net/marksinoberg/article/details/51501377' getHtml(url,headers)
Au début, on voit évidemment l'augmentation du nombre de blogs, (^__^) Hé hé... cela a commencé à montrer des résultats. Mais les bons moments n’ont pas duré longtemps. J’ai constaté que le nombre de vues était multiplié par 10. Juste haha.
Alors il ne peut pas être ajouté. C'est probablement parce que le serveur a imposé certaines restrictions sur mon accès, sinon cela devrait être faisable.
Pensez aux moyens de gérer les pièges
Comme le dit le proverbe : « Il y a des politiques d'en haut et des contre-mesures d'en bas. Naturellement, je ne pourrais pas l'être. » limité par cela, alors j'ai deviné que c'était contre mon adresse IP enregistrée. Ensuite, certaines limites ont été ajoutées à mon nombre de visites.
Ma solution :
IP proxy pour l'accès : Cependant, étant donné qu'il n'y a pas de serveur, l'IP proxy n'est pas accessible .
Changer d'IP : Puisque c'est le cas, je trouverai un moyen de changer mon IP pour y accéder. Alors comment changer son IP ? (Je le regrette maintenant que j'y pense. À cette époque, je ne prêtais pas attention aux cours sur les réseaux informatiques et je n'avais pas bien appris l'usurpation d'adresse IP. Sinon, ne serait-il pas possible de l'utiliser maintenant ?) Mais tous les chemins mènent à Rome, et j’en ai d’autres. Comme suit :
C:UsersAdministrator>ipconfig /release
Configuration IP Windows
Impossible d'effectuer des opérations sur la connexion locale, il a déconnecté le média connecter.
Connexion réseau sans fil :
Suffixe DNS spécifique à la connexion . :1d9f:d97b:fd16:1f6f%
Passerelle par défaut . . . -suffixe DNS spécifique . . . . :
Adaptateur de tunnel.{4F399971-B739-4B79-E48233EEC9BE} :
. Suffixe DNS spécifique à la connexion . . . : Médias déconnectés
Suffixe DNS spécifique . . . : Médias déconnectésSuffixe DNS spécifique . . . 🎜>
媒体状态 . . . . . . . . . . . . : 媒体已断开
连接特定的 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!