最近我在网上也看到了很多有意思的东西,发现大家对于爬虫的运用哦真滴是八仙过海,竟然还有刷访问量的

好吧我也被忽悠进来看一看,但是也发现在现有的运行环境上会有一些纰漏,所以做了一些修正

首先给出网上的代码:

#!/usr/bin/env python  
# -*- coding:utf-8 -*-  
import urllib    # Python中的cURL库  
import urllib.request 
from urllib import request,parse
import time    # 时间函数库,包含休眠函数sleep()  
url = 'http://blog.csdn.net/xiongyouqiang/article/details/77896435'    # 希望刷阅读量的文章的URL  
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'    # 伪装成Chrome浏览器  
refererData = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=csdn%20%E6%80%9D%E6%83%B3%E7%9A%84%E9%AB%98%E5%BA%A6%20csdnzouqi&oq=csdn%20%E6%80%9D%E6%83%B3%E7%9A%84%E9%AB%98%E5%BA%A6&rsv_pq=fe7241c2000121eb&rsv_t=0dfaTIzsy%2BB%2Bh4tkKd6GtRbwj3Cp5KVva8QYLdRbzIz1CCeC1tOLcNDWcO8&rqlang=cn&rsv_enter=1&rsv_sug3=11&rsv_sug2=0&inputT=3473&rsv_sug4=3753'    #伪装成是从baidu.com搜索到的文章  
dict ={
   'name':'Germey'
}
data=bytes(parse.urlencode(dict),encoding='utf-8')    # 将GET方法中待发送的数据设置为空  
headers = {'User-Agent' : user_agent, 'Referer' : refererData}    # 构造GET方法中的Header  
count = 0    # 初始化计数器  
req = urllib.request.Request(url, data, headers,method='POST')    # 组装GET方法的请求  
while 1:    # 一旦开刷就停不下来  
    rec = urllib.request.urlopen(req)    # 发送GET请求,获取博客文章页面资源  
    page = rec.read()    # 读取页面内容到内存中的变量,这句代码可以不要  
    count += 1    # 计数器加1  
    print (count)    # 打印当前循环次数  
    if count % 6:    # 每6次访问为1个循环,其中5次访问等待时间为31秒,另1次为61秒  
        time.sleep(31)    # 为每次页面访问设置等待时间是必须的,过于频繁的访问会让服务器发现刷阅读量的猥琐行为并停止累计阅读次数  
    else:  
        time.sleep(61)  
print (page)    # 打印页面信息,这句代码永远不会执行  

这个不算特别坑吧,还有一个调用urllib2的,真的是调试错误就要半天,果断放弃,现在用requests库改装一下,不仅美观好多,而且能完美运行了,美滋滋嘻嘻

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
import time    # 时间函数库,包含休眠函数sleep()
url = 'https://www.cnblogs.com/xingnie/p/9510575.html'    # 希望刷阅读量的文章的URL
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT'    # 伪装成Chrome浏览器
refererData = 'https://www.baidu.com/link?url=iktCPK30pZ_4lJwnHLNL_70yOVGdE3_egeZvYpSyzu2y1wW-7QcvLbb5mOBNTie1&wd=&eqid=f4fefc5f00048852000000045b7fabcd'  # 伪装成是从baidu.com搜索到的文章

headers = {'User-Agent' : user_agent,
           'Referer' : refererData
           }    # 构造GET方法中的Header
count = 0    # 初始化计数器

while 1:    # 一旦开刷就停不下来
    request = requests.get(url=url,headers=headers)  # 发送GET请求,获取博客文章页面资源
    count = count+1    # 计数器加1
    print('这是第%s次访问',count)# 打印当前循环次数
    print(request.text) #这里用来验证是不是每次真的访问了,可以不要
    if count % 6:    # 每6次访问为1个循环,其中5次访问等待时间为31秒,另1次为61秒
        time.sleep(31)    # 为每次页面访问设置等待时间是必须的,过于频繁的访问会让服务器发现刷阅读量的猥琐行为并停止累计阅读次数
    else:
        time.sleep(61)

主要的也没改什么,去了一些多余的

我的建议是后期用session维会话,同时采用面向对象的方法封装起来,前面的放在init方法中,后面在弄一个方法

最后的话可以利用tklinter的库做一个包装,再打包成exe,这样无论是谁都可以用啦,只要输入网址就行了,不过那个模仿成百度跳转的可能要改一改就能随便刷什么啦

版权声明:本文为xingnie原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xingnie/p/9530832.html