ホームページ  >  記事  >  バックエンド開発  >  Python はブログ閲覧エクスペリエンスの自動共有を実装します

Python はブログ閲覧エクスペリエンスの自動共有を実装します

巴扎黑
巴扎黑オリジナル
2017-08-08 15:58:362077ブラウズ

この記事では、主にブログビューを自動でブラッシングするための Python のサンプルコードを紹介します。編集者が非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう

アイデアのソース

今日偶然、他の人が現在の「ボリュームブラッシング」動作について話しているのを聞いて、私の好奇心を呼び起こしました。次に、requests モジュールを調べたところ、たまたま役に立ったので、簡単なテスト ケースを作成しました。奇跡的に、私はこのトリックが実際に機能することを発見しました。それで、何を待っていますか?

Prelude

このアイデアは非常にシンプルで、リクエストを送信する実装だけです。コードは次のとおりです:


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

ターゲット URL とヘッダーを手動で追加するだけです。当然、私は自分のものを使用してテストします。

コードを実行してみたところ、確かに閲覧数が増加しました。

低成長

そのような計画は実現可能であるということは、その考えは正しいということになります。したがって、私たちは自然にループを書くことを考えます。これにより、閲覧数が大幅に増加する可能性があるのではないでしょうか?
はい、まさにそれが私がやったことです。コードは以下の通りです:


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

初めは明らかにブログ数が増えているのがわかります(^_^)ふふふ…成果が出始めました。しかし、良い時期は長くは続かず、閲覧数が10倍に増加したことがわかりました。ただ、ははは。

その後、追加できません。おそらく、サーバーがアクセスに特定の制限を課しているためです。そうでない場合は、追加できるはずです。

落とし穴への対処法を考えよう

「上からの政策、下からの対策」という言葉があるように、当然それに縛られるわけにもいかず、私のIPはこうだったのだろうと推測しました。記録された。その後、訪問回数にいくつかの制限が追加されました。

私の解決策:

  1. アクセス用のプロキシIP: ただし、サーバーがないことを考慮すると、プロキシIPにはアクセスできません。

  2. IP の変更: このような場合は、アクセス用の IP を変更する方法を見つけます。では、IP を変更するにはどうすればよいでしょうか? (今考えると後悔しています。当時はコンピュータネットワークの授業に注目していなかったので、IPスプーフィングの勉強が足りませんでした。そうしないと今では使えないでしょう)。しかし、すべての道はローマに通ず、私には他の道もあります。次のように:

C:UsersAdministrator>ipconfig /release

Windows IP 構成

ローカル エリア接続で操作を実行できません。メディアが切断されました。

ワイヤレス ネットワーク接続:

リンクローカル IPv6 アドレス。 . . . . . . . . . . ix. . . . . . . . . . . . . . . . . . . . . : :359d:741

。 . : 255.255.255.0
. . . . . . . . . . . 。 . . . . . . . . . . . 。 . . . . . . . . . . . . . . . . . . . . . . :
. . . . . . . . . . . . . . . . . 。 . . . . . . . . . B71-BD79 -E48233EEC9BE}:

メディアのステータス。

。 E15}:

メディア. . . . . . . . . . . . . . . . . . . . . . . . . . 接続が切断されました。 . . メディアが切断されました。

接続固有の DNS サフィックス :

   媒体状态  . . . . . . . . . . . . : 媒体已断开
   连接特定的 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. 結果を判断します(結果を表示)。 2 つの連続した結果が一致した場合、Python を起動し、cmd コマンドを実行して IP を更新します。しかし、これは時間のかかる操作なので、スレッドに入れることができます

  2. 次に、独自のブログ リスト インターフェイスを取得して、すべてのブログ投稿を取得します。もちろん、ここではシミュレートされたログインが使用されていることは明らかです。次に各ブログのボリュームをブラッシュアップします。これで問題が根本的に解決されるわけではありませんが、少しでも積み重なると良い効果が得られます。

  3. ボリュームを定期的に更新するスレッドを作成し、XX 回ごとに更新します。結局のところ、1 つの記事が何百ものアクセスを集める可能性があります。 (試してないので分かりません)

以上がPython はブログ閲覧エクスペリエンスの自動共有を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。