python爬虫增加访问量的方法


Posted in Python onAugust 22, 2019

看着自己少得可怜的访问量,突然有一个想用爬虫刷访问量的想法,主要也是抱着尝试的心态,学习学习。

其实市面上有一些软件可以代刷流量 比如 流量精灵,使用感确实比我们自己写的代码要好一些

第一版:网上借鉴了一下           以下代码运行在 python3

import urllib.request
import time
# 使用build_opener()是为了让python程序模仿浏览器进行访问
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
# 专刷某个页面
print('开始刷了哦:')
tempUrl = 'https://blog.csdn.net/Lin_QC/article/details/88966839'
for j in range(2000):
  try:
    opener.open(tempUrl)
    time.sleep(7)
    print('%d %s' % (j, tempUrl))
  except urllib.error.HTTPError:
    print('urllib.error.HTTPError')
    time.sleep(1)
  except urllib.error.URLError:
    print('urllib.error.URLError')
    time.sleep(1)

该代码主要就是利用爬虫打开网页来进行访问量的刷新,但是,该方法遇到了瓶颈,当刷新到一定访问量时,csdn的服务器会阻止该ip的访问,也就刷新不了访问量了。

所以,也就衍生了第二版。

我们可以在  https://www.xicidaili.com 网站上看到很多代理ip,使用这些代理ip,可以防止csdn服务器阻止访问。

首先,编写了一个获取代理ip的文件,经我本人实验,国内http代理ip较为稳定,所以我们爬取

'https://www.xicidaili.com/wt/1 

页面的代理ip信息,并将它们存储在proxy文件里,以下代码是基于 python2的,注意不要弄错版本

proxy_IP.py文件

import urllib2
import BeautifulSoup
User_Agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0'
header = {}
header['User-Agent'] = User_Agent
url = 'https://www.xicidaili.com/wt/1'
req = urllib2.Request(url, headers=header)
res = urllib2.urlopen(req).read()
soup = BeautifulSoup.BeautifulSoup(res)
ips = soup.findAll('tr')
f = open("proxy", "w")
for x in range(1,len(ips)):
  ip = ips[x]
  tds = ip.findAll("td")
  ip_temp = tds[1].contents[0]+","+tds[2].contents[0]+"\n"
  print tds[1].contents[0]+"\t"+tds[2].contents[0]
  f.write(ip_temp)

通过执行以上代码,我们就可以获得大量代理ip,接下来就是使用这些ip进行对博客的访问。

csdnfake.py

import urllib2
import socket
import time
import random
socket.setdefaulttimeout(3)
user_agent_list = [
  'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
           'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3',
  'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
  'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
  'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)',
  'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
  'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
  'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
  'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)',
  'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0',
  'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
]
f = open("proxy")
lines = f.readlines()
proxys = []
 
for i in range(0,len(lines)):
  ip = lines[i].strip().split(",")
  proxy_host = "http://"+ip[0]+":"+ip[1]
  print "http://"+ip[0]+":"+ip[1]
  proxy_temp = {"http": proxy_host}
  proxys.append(proxy_temp)
urls = {"https://blog.csdn.net/Lin_QC/article/details/88966839",
    "https://blog.csdn.net/Lin_QC/article/details/88930018",
    "https://blog.csdn.net/Lin_QC/article/details/88642949",
    "https://blog.csdn.net/Lin_QC/article/details/84568170",
    "https://blog.csdn.net/Lin_QC/article/details/84451279",
    "https://blog.csdn.net/Lin_QC/article/details/84927503",
    }
 
j=1
for i in range(100):
  for proxy in proxys:
    for url in urls:
      try:
        user_agent = random.choice(user_agent_list)
        proxy_support = urllib2.ProxyHandler(proxy)
        opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)
        urllib2.install_opener(opener)
        req = urllib2.Request(url)
        c = urllib2.urlopen(req)
        print ("sucessful",j)
        j+=1
        time.sleep(5) 
      except Exception, e:
        print proxy
        print e
        continue

user_agent_list是一堆浏览器的代理头,可以模仿浏览器访问博客。

每次访问休息五秒,主要是因为过快的访问对csdn无效。

总结

以上所述是小编给大家介绍的python爬虫增加访问量的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
python发布模块的步骤分享
Feb 21 Python
使用python调用浏览器并打开一个网址的例子
Jun 05 Python
Python爬虫框架Scrapy实例代码
Mar 04 Python
Python2包含中文报错的解决方法
Jul 09 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
python实现共轭梯度法
Jul 03 Python
python suds访问webservice服务实现
Jun 26 Python
python开发入门——列表生成式
Sep 03 Python
Python类型转换的魔术方法详解
Dec 23 Python
Python中字典与恒等运算符的用法分析
Aug 22 #Python
python实现通过flask和前端进行数据收发
Aug 22 #Python
python2.7的flask框架之引用js&css等静态文件的实现方法
Aug 22 #Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 #Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 #Python
详解Django-channels 实现WebSocket实例
Aug 22 #Python
解决python3 requests headers参数不能有中文的问题
Aug 21 #Python
You might like
解决中英文字符串长度问题函数
2007/01/16 PHP
php教程之phpize使用方法
2014/02/12 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
详解Vuejs2.0之异步跨域请求
2017/04/20 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
Python原始套接字编程实例解析
2020/01/29 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
python连接mysql有哪些方法
2020/06/24 Python
5款实用的python 工具推荐
2020/10/13 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
The Athlete’s Foot新西兰:新西兰最大的运动鞋零售商
2019/12/23 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
毕业生物理教师求职信
2013/10/17 职场文书
天鹅湖观后感
2015/06/09 职场文书
校长新学期致辞
2015/07/30 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
JavaScript 对象创建的3种方法
2021/11/17 Javascript
Redis基本数据类型List常用操作命令
2022/06/01 Redis