使用requests模块构造的下载器,首先安装第三方库requests

pip install requests

  1. 1 class StrongDownload(object):
  2.  
  3. def __init__(self):
  4. #拿到代理iplist
  5. self.iplist = ['自己想办法搞'] #
  6. self.UserAgent = ['自己想办法搞']
  7.  
  8. def get(self,url,timeout,proxy=False,num_retries=3):
  9. '''url timeout,proxy,num_retries
  10. 返回response对象
  11. '''
  12. #伪造UserAgent
  13. UA = self.UserAgent[random.randint(0,len(self.UserAgent)-1)]
  14. #UA = random.choice(self.UserAgent)
  15. headers = {'User-Agent':UA}
  16. if proxy == False:
  17. try:
  18. return requests.get(url,timeout=timeout,headers=headers)
  19. except Exception as e:
  20. print e
  21. #判断retries
  22. if num_retries>0:
  23. print u'爬取网页错误,10s后继续尝试.....'
  24. time.sleep(1)
  25. return self.get(url, timeout, False, num_retries-1)
  26. else:#重试次数用尽,使用代理
  27. time.sleep(1)
  28. IP = str(random.choice(self.iplist))
  29. proxy = {'http',IP}
  30. return self.get(url, timeout, True,5)
  31.  
  32. else:#使用代理
  33.  
  34. try:
  35. print '开始使用代理'
  36. IP = random.choice(self.iplist)
  37. proxy = {'http':IP}
  38. print proxy['http']
  39. return requests.get(url,headers=headers, timeout=timeout, proxies=proxy)
  40. except:
  41. if num_retries>0:
  42. print u'代理爬取网页错误,10s后继续尝试.....'
  43. time.sleep(1)
  44. return self.get(url, timeout,True, num_retries-1)
  45. else:#代理也不行
  46. time.sleep(30)
  47. print u'代理也没用...'
  48. return None

基于python第三方requests 模块的HTTP请求类的更多相关文章

  1. python中Requests模块中https请求在设置为忽略有效性验证,屏蔽告警信息的方式

    增加下面的就ok了from requests.packages.urllib3.exceptions import InsecureRequestWarningrequests.packages.ur ...

  2. Python接口测试-使用requests模块发送GET请求

    本篇主要记录下使用python的requests模块发送GET请求的实现代码. 向服务器发送get请求:无参数时:r = requests.get(url)带params时:r = requests. ...

  3. Python接口测试-使用requests模块发送post请求

    本篇主要记录下使用python的requests模块发送post请求的实现代码. #coding=utf-8 import unittest import requests class PostTes ...

  4. Python之requests模块-request api

    requests所有功能都能通过"requests/api.py"中的方法访问.它们分别是: requests.request(method, url, **kwargs) req ...

  5. Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗

    介绍   本篇博客将会介绍一个Python爬虫,用来爬取各个国家的国旗,主要的目标是为了展示如何在Python的requests模块中使用POST方法来爬取网页内容.   为了知道POST方法所需要传 ...

  6. python 爬虫 requests模块 目录

    requests模块(response常用属性) 基于requests模块的get请求 基于requests模块发起ajax的get请求 基于requests模块发起ajax的post请求

  7. Python之requests模块-hook

    requests提供了hook机制,让我们能够在请求得到响应之后去做一些自定义的操作,比如打印某些信息.修改响应内容等.具体用法见下面的例子: import requests # 钩子函数1 def ...

  8. Python之requests模块-cookie

    cookie并不陌生,与session一样,能够让http请求前后保持状态.与session不同之处,在于cookie数据仅保存于客户端.requests也提供了相应到方法去处理cookie. 在py ...

  9. Python之requests模块-session

    http协议本身是无状态的,为了让请求之间保持状态,有了session和cookie机制.requests也提供了相应的方法去操纵它们. requests中的session对象能够让我们跨http请求 ...

随机推荐

  1. mysql 基础之CURD

    原文:mysql 基础之CURD 增删改查基本语法学习 增: insert Insert 3问: 1: 插入哪张表? 2: 插入哪几列? 3: 这几列分别插入什么值? Insert into Tabl ...

  2. javascript Function.prototype.bind

    语法: fn.bind(obj,arg1,arg2,arg3...) bind是es5新增的方法,顾名思义,它的作用是将函数绑定到某个对象上,就像是某个对象调用方法一样.其本质还是改变了该函数的上下文 ...

  3. MVC5搜索/查询 流程功能的实现

    接着上次的篇幅,我们这篇手动来写一个查询的流程代码!  搜索/查询 流程功能的实现 那现在要做搜索(查询)功能我们第一步应该做什么呢!第一次是不是我们应该去Controller(控制器)里去搞一个搜索 ...

  4. 自动生成api文档

    vs2010代码注释自动生成api文档 最近做了一些接口,提供其他人调用,要写个api文档,可是我想代码注释已经写了说明,能不能直接把代码注释生成api?于是找到以下方法 环境:vs2010 先下载安 ...

  5. BitMap画图

    package com.example.examples_05_07; import android.content.Context; import android.graphics.Bitmap; ...

  6. ecshop下启用QQ在线服务,并能实时更新QQ在线状态

    按照 http://blog.csdn.net/zurich1979/article/details/9082201 可轻松实现在线客服, 但是使用后发现一个问题,那就是这种情况下在线客服不能根据QQ ...

  7. vs2013

    vs2013使用初体验   刚安装好vs2013 , 初步体验了一把, 下面是我目前感受到的改变(对比vs2012) 1. 任务栏图标变了 (左边vs2013, 右边vs2012)    2. 开始界 ...

  8. (转)NoSQL——Redis在win7下安装配置的学习一

    NoSQL——Redis在win7下安装配置的学习一   有些也是从网上看来的 1.下载安装 Redis它没有windows的官方版本,但是又非官方的版本,到官网上去下载相应的版本,我的电脑是win7 ...

  9. IOS学习之路七(通过xib自定义UITableViewCell)

    一.新建iOS Application工程,选择Single View Application,不要选中Use Storyboard.假设指定的是product name是:UITableViewCe ...

  10. jquery选择器之基本过滤选择器

    <style type="text/css"> /*高亮显示*/ .highlight{ background-color: gray } </style> ...