Heim  >  Artikel  >  Backend-Entwicklung  >  Python implementiert den automatischen Erfahrungsaustausch beim Blog-Browsing

Python implementiert den automatischen Erfahrungsaustausch beim Blog-Browsing

巴扎黑
巴扎黑Original
2017-08-08 15:58:362110Durchsuche

In diesem Artikel wird hauptsächlich der Beispielcode von Python zum automatischen Bürsten von Blogansichten vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Herausgeber, um einen Blick darauf zu werfen.

Ideenquelle

Heute habe ich zufällig andere über das aktuelle „Volumenbürsten“-Verhalten sprechen hören, also habe ich mich geärgert meine Neugier. Dann habe ich mir das Modul „Anfragen“ angesehen und es hat sich für mich als nützlich erwiesen, also habe ich einen einfachen Testfall geschrieben. Wie durch ein Wunder entdeckte ich, dass dieser Trick tatsächlich funktioniert. Worauf warten Sie noch? Beginnen Sie mit dem Zähneputzen.

Vorwort

Die Idee ist sehr einfach, nur eine Umsetzung des Sendens einer Anfrage, das ist alles. Der Code lautet wie folgt:


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

Wir fügen einfach manuell die Ziel-URL und einen Header hinzu. Natürlich werde ich mein eigenes zum Testen verwenden.

Ich habe versucht, den Code auszuführen, und er kann tatsächlich die Anzahl der Aufrufe erhöhen.

Langsames Wachstum

Da ein solcher Plan machbar ist, bedeutet dies, dass die Idee richtig ist. Daher denken wir natürlich darüber nach, eine Schleife zu schreiben. Wäre dadurch nicht eine massive Steigerung des Browsings möglich?
Ja, genau das habe ich getan. Der Code lautet wie folgt:


i= 0
while i < 10:
  url = &#39;http://jb51.net/marksinoberg/article/details/51501377&#39;
  getHtml(url,headers)

Am Anfang sieht man deutlich den Anstieg der Bloganzahl, (^__^) Hee hee... es hat begonnen, Ergebnisse zu zeigen. Aber die guten Zeiten hielten nicht lange an. Ich stellte fest, dass sich die Anzahl der Aufrufe um das Zehnfache erhöhte. Nur haha.

Dann kann es nicht hinzugefügt werden, weil der Server meinem Zugriff bestimmte Einschränkungen auferlegt hat, sonst sollte es machbar sein.

Überlegen Sie, wie Sie mit den Fallstricken umgehen können

Wie das Sprichwort sagt: „Es gibt Richtlinien von oben und Gegenmaßnahmen von unten.“ dadurch eingeschränkt, daher vermutete ich, dass es sich um einen Verstoß gegen meine IP-Aufzeichnung handelte. Dann wurden meiner Anzahl an Besuchen einige Grenzen gesetzt.

Meine Lösung:

  1. Proxy-IP für den Zugriff: Da jedoch kein Server vorhanden ist, kann nicht auf die Proxy-IP zugegriffen werden . .

  2. IP ändern: Da dies der Fall ist, werde ich einen Weg finden, meine IP für den Zugriff zu ändern. Wie ändern Sie also Ihre IP? (Ich bereue es jetzt, wenn ich darüber nachdenke. Ich habe damals nicht auf den Computernetzwerkkurs geachtet und IP-Spoofing nicht gut gelernt, sonst wäre es jetzt nicht möglich, es zu verwenden.) Aber alle Wege führen nach Rom, und ich habe andere Wege. Wie folgt:

C:UsersAdministrator>ipconfig /release

Windows IP-Konfiguration

Auf der lokalen Verbindung können keine Vorgänge ausgeführt werden, da die Medienverbindung getrennt wurde verbinden.

WLAN-Adapter-Suffix . :1d9f:d97b:1f6f% . . . . . . . . . . . . . . . . -spezifisches DNS-Suffix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verbindungsspezifisches IPv6-Adresse. . . . . . . . . . . . . . . . . . . . Medienstatus . . . Medienstatus . . . . . . . . . . 🎜>

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 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__ = &#39;Mark sinoberg&#39;
#  __date__ = &#39;2016/5/26&#39;
#  __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,&#39;lxml&#39;)
  return content

def getReadNums(data,st):
  reg = re.compile(st)
  return re.findall(reg,data)

url = &#39;http://jb51.net/marksinoberg/article/details/51493318&#39;
headers = {
  &#39;referer&#39;:&#39;http://jb51.net/&#39;,
  &#39;User-Agent&#39;:&#39;Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36&#39;
}
i = 0
while i<24:
  html = getHtml(url,headers)
  content = parse(html)
  result = content.find_all(&#39;span&#39;,class_=&#39;link_view&#39;)
  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次访问。

展望

其实我是可以做到一次运行多次刷新的效果的,但是这样做不是特别的正派,所以我就说一下自己的思路吧。

  1. Beurteilen Sie das Ergebnis (Anzeigenergebnis). Wenn zwei aufeinanderfolgende Ergebnisse konsistent sind, starten Sie Python und führen Sie den Befehl cmd aus, um Ihre IP zu aktualisieren. Dies ist jedoch ein zeitaufwändiger Vorgang. Sie können ihn in einen Thread einfügen

  2. und dann Ihre eigene Blog-Listenoberfläche crawlen, um alle Ihre Blog-Beiträge abzurufen. Natürlich wird hier natürlich eine simulierte Anmeldung verwendet. Erhöhen Sie dann die Lautstärke jedes Blogs. Obwohl dies das Problem nicht wirklich löst, wird es eine gute Wirkung haben, wenn sich ein wenig summiert.

  3. Erstellen Sie einen Thread, der die Lautstärke regelmäßig aktualisiert, und aktualisieren Sie ihn alle XX Mal. Am Ende des Tages kann ein Artikel wahrscheinlich Hunderte von Besuchen erhalten. (Ich habe es nicht ausprobiert und weiß es nicht)

Das obige ist der detaillierte Inhalt vonPython implementiert den automatischen Erfahrungsaustausch beim Blog-Browsing. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn