ホームページ >バックエンド開発 >Python チュートリアル >Python を使用してページビューを増やすためのチュートリアルの例を共有します
この記事では、主にブログビューを自動でブラッシングするための Python のサンプルコードを紹介します。編集者が非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう
アイデアのソース
今日偶然、他の人が現在の「ボリュームブラッシング」動作について話しているのを聞いて、私の好奇心を呼び起こしました。次に、requests モジュールを調べたところ、たまたま役に立ったので、簡単なテスト ケースを作成しました。奇跡的に、私はこのトリックが実際に機能することを発見しました。それで、何を待っていますか?
Prelude
このアイデアは非常にシンプルで、リクエストを送信する実装だけです。コードは次のとおりです:
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 とヘッダーを手動で追加するだけです。当然、私自身のものを使用してテストします。
コードを実行してみたところ、確かに閲覧数が増加しました。
低成長
そのような計画は実現可能であるということは、その考えは正しいということになります。したがって、自然に loop を書こうと考えます。これにより、閲覧数が大幅に増加する可能性があるのではないでしょうか?
はい、まさにそれが私がやったことです。コードは以下の通りです:
i= 0 while i < 10: url = 'jb51.net/marksinoberg/article/details/51501377' getHtml(url,headers)
初めは明らかにブログ数が増えているのがわかります(^^)ふふふ…成果が出始めました。しかし、良い時期は長くは続かず、閲覧数が10倍に増加したことがわかりました。ただ、ははは。
その後、追加できません。おそらく、サーバーがアクセスに特定の制限を課しているためです。そうでない場合は、追加できるはずです。
落とし穴への対処法を考えよう
「上からの政策、下からの対策」という言葉があるように、当然それに縛られるわけにもいかず、私のIPはこうだったのだろうと推測しました。記録された。その後、訪問回数にいくつかの制限が追加されました。
私の解決策:
アクセス用のプロキシIP: ただし、サーバーがないことを考慮すると、プロキシIPにはアクセスできません。
IP の変更: このような場合は、アクセス用の IP を変更する方法を見つけます。では、IP を変更するにはどうすればよいでしょうか? (今考えると後悔しています。当時はコンピュータネットワークの授業に注目していなかったので、IPスプーフィングの勉強が足りませんでした。そうしないと今では使えないでしょう)。しかし、すべての道はローマに通ず、私には他の道もあります。次のように:
C:UsersAdministrator>ipconfig /release
Windows IP 構成
ローカル エリア接続で操作を実行できません。メディアが切断されました。
ワイヤレス ネットワーク接続:
リンクローカル IPv6 アドレス。 . . . . . . . . . . ix. . . . . . . . . . . . . . . . . . . . . : :359d:741 。 . : 255.255.255.0
. . . . . . . . . . . 。 . . . . . . . . . . . 。 . . . . . . . . . . . . . . . . . . . . . . :
. . . . . . . . . . . . . . . . . 。 . . . . . . . . . B71-BD79 -E48233EEC9BE}:
メディアのステータス。
接続が切断されました。 }:
dl
接続が切断されました。 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次访问。
展望
其实我是可以做到一次运行多次刷新的效果的,但是这样做不是特别的正派,所以我就说一下自己的思路吧。
結果を判断します(結果を表示)。 2 つの連続した結果が一致した場合、Python を起動し、cmd コマンドを実行して IP を更新します。しかし、これは時間のかかる操作なので、スレッドに入れることができます
次に、独自のブログ リスト インターフェイスを取得して、すべてのブログ投稿を取得します。もちろん、ここではシミュレートされたログインが使用されていることは明らかです。次に各ブログのボリュームをブラッシュアップします。これで問題が根本的に解決されるわけではありませんが、少しでも積み重なると良い効果が得られます。
ボリュームを定期的に更新するスレッドを作成し、XX 回ごとに更新します。最終的には、1 つの記事に何百ものアクセスが集まる可能性があります。 (試してないので分かりません)
以上がPython を使用してページビューを増やすためのチュートリアルの例を共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。