重要的事情说三遍:
仅供学习使用,若有其他想法,请出门右转
仅供学习使用,若有其他想法,请出门右转
仅供学习使用,若有其他想法,请出门右转
准备:
简单的网站浏览量无非就是访问次数,那么一直按F5就可以,做得比较好的网站会根据“ip”计算浏览量。
所以步骤如下:
1、去提供代理ip的网站爬取大量ip
2、利用爬取的ip去构建请求,请求需要刷新的网址
遇到的问题:
1、proxy里面http 和https要小写 ,
2、代理的ip不能正常使用,需要try 把异常抛出来,
3、去爬取代理的时候竟然被代理网站屏蔽了(我也很无奈,只能随便找一个可用ip去代理访问)
开始:
直接上代码:(单线程)
#coding=utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#-----------------------------------以上为控制编码方式
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
#-----------------------------------构建爬大力ip头部请求
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
}
#----------------------------------构建刷浏览量的头部
headers1 = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding":"gzip, deflate, br",
"Accept-Language":"zh-CN,zh;q=0.9",
"Host":"blog.csdn.net",
"Referer":"https://www.baidu.com/link?url=N5tv6Q8HFZKoiM0jwgasxeZFcACmTQj6ZdhGH_9tw-4moasBNbt1ziUg7Hc3yrNdDUzkywJWaptTv2nB7Mhn6Zmmbbcb73KDiV9UkkyiLIi&wd=&eqid=b01ced82000163f1000000025bc6f2c2",
}
##爬取代理网址
url = "http://www.nimadaili.com/https/"
#刷浏览量网址
url1 = "https://blog.csdn.net/xidianyueyong/article/details/83014490"
page = 1 #走动拉去ip下一页
index = 1 #刷新次数计数
while 1:
#使用代理ip大量拉取代理ip 由于ip代理网站是js交互式的,所以要本地起一个 phantomJs 来解析
###下面这个不要问为什么,现代代理ip的网站也有屏蔽 迫不得已用代理爬虫代理ip
#-----------------------------------------------------------------------------------------
service_args = ['--proxy=123.57.76.102:80','--proxy-type=http'] #设置ip
# "http":"http://120.77.247.147:80"
driver = webdriver.PhantomJS(service_args = service_args)
driver.get(url+str(page))
data = driver.page_source
driver.quit()
page+=1 #表示翻页
print page #打印下一页页数
source = BeautifulSoup(data, "lxml") # 解析一下执行过js的网页代码
cookies = dict(smidV2='201809010949063bb3637a1929ba7ee66871cecd6cf81f007684ccfa7eaaa50') #随笔写一个cookies
# -----------------------------------ip结果处理
res_group = source.select(".mt-0 tr") #分析网站源码,找到ip列表并提取
res_group = res_group[1:] #截去第一个防止title被算进内
#-------------------------------------------------------------------------------------------------------
#-------------------------------------------------------------------------------------------------------
#刷浏览量部分
for i in res_group: #循环利用代理ip
if len(i) > 0 and i != []:
td_group = i.find_all("td")
#---------------------------构造代理
proxy = {
"https":"https"+"://"+td_group[0].text #+":"+td_group[2].text
}
# ----------------------------------代理发送请求
try:
r = requests.get(url=url1, headers=headers1, proxies=proxy,cookies = cookies,timeout = 3)
except BaseException:
continue
else:
if r.status_code == 200:
print ("刷新 %d次!" % index)
index += 1
else:
continue
print "刷新成功!"
望各位看官大神指点12