基于python第三方requests 模块的HTTP请求类
使用requests模块构造的下载器,首先安装第三方库requests
pip install requests
- 1 class StrongDownload(object):
- def __init__(self):
- #拿到代理iplist
- self.iplist = ['自己想办法搞'] #
- self.UserAgent = ['自己想办法搞']
- def get(self,url,timeout,proxy=False,num_retries=3):
- '''url timeout,proxy,num_retries
- 返回response对象
- '''
- #伪造UserAgent
- UA = self.UserAgent[random.randint(0,len(self.UserAgent)-1)]
- #UA = random.choice(self.UserAgent)
- headers = {'User-Agent':UA}
- if proxy == False:
- try:
- return requests.get(url,timeout=timeout,headers=headers)
- except Exception as e:
- print e
- #判断retries
- if num_retries>0:
- print u'爬取网页错误,10s后继续尝试.....'
- time.sleep(1)
- return self.get(url, timeout, False, num_retries-1)
- else:#重试次数用尽,使用代理
- time.sleep(1)
- IP = str(random.choice(self.iplist))
- proxy = {'http',IP}
- return self.get(url, timeout, True,5)
- else:#使用代理
- try:
- print '开始使用代理'
- IP = random.choice(self.iplist)
- proxy = {'http':IP}
- print proxy['http']
- return requests.get(url,headers=headers, timeout=timeout, proxies=proxy)
- except:
- if num_retries>0:
- print u'代理爬取网页错误,10s后继续尝试.....'
- time.sleep(1)
- return self.get(url, timeout,True, num_retries-1)
- else:#代理也不行
- time.sleep(30)
- print u'代理也没用...'
- return None
基于python第三方requests 模块的HTTP请求类的更多相关文章
- python中Requests模块中https请求在设置为忽略有效性验证,屏蔽告警信息的方式
增加下面的就ok了from requests.packages.urllib3.exceptions import InsecureRequestWarningrequests.packages.ur ...
- Python接口测试-使用requests模块发送GET请求
本篇主要记录下使用python的requests模块发送GET请求的实现代码. 向服务器发送get请求:无参数时:r = requests.get(url)带params时:r = requests. ...
- Python接口测试-使用requests模块发送post请求
本篇主要记录下使用python的requests模块发送post请求的实现代码. #coding=utf-8 import unittest import requests class PostTes ...
- Python之requests模块-request api
requests所有功能都能通过"requests/api.py"中的方法访问.它们分别是: requests.request(method, url, **kwargs) req ...
- Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗
介绍 本篇博客将会介绍一个Python爬虫,用来爬取各个国家的国旗,主要的目标是为了展示如何在Python的requests模块中使用POST方法来爬取网页内容. 为了知道POST方法所需要传 ...
- python 爬虫 requests模块 目录
requests模块(response常用属性) 基于requests模块的get请求 基于requests模块发起ajax的get请求 基于requests模块发起ajax的post请求
- Python之requests模块-hook
requests提供了hook机制,让我们能够在请求得到响应之后去做一些自定义的操作,比如打印某些信息.修改响应内容等.具体用法见下面的例子: import requests # 钩子函数1 def ...
- Python之requests模块-cookie
cookie并不陌生,与session一样,能够让http请求前后保持状态.与session不同之处,在于cookie数据仅保存于客户端.requests也提供了相应到方法去处理cookie. 在py ...
- Python之requests模块-session
http协议本身是无状态的,为了让请求之间保持状态,有了session和cookie机制.requests也提供了相应的方法去操纵它们. requests中的session对象能够让我们跨http请求 ...
随机推荐
- mysql 基础之CURD
原文:mysql 基础之CURD 增删改查基本语法学习 增: insert Insert 3问: 1: 插入哪张表? 2: 插入哪几列? 3: 这几列分别插入什么值? Insert into Tabl ...
- javascript Function.prototype.bind
语法: fn.bind(obj,arg1,arg2,arg3...) bind是es5新增的方法,顾名思义,它的作用是将函数绑定到某个对象上,就像是某个对象调用方法一样.其本质还是改变了该函数的上下文 ...
- MVC5搜索/查询 流程功能的实现
接着上次的篇幅,我们这篇手动来写一个查询的流程代码! 搜索/查询 流程功能的实现 那现在要做搜索(查询)功能我们第一步应该做什么呢!第一次是不是我们应该去Controller(控制器)里去搞一个搜索 ...
- 自动生成api文档
vs2010代码注释自动生成api文档 最近做了一些接口,提供其他人调用,要写个api文档,可是我想代码注释已经写了说明,能不能直接把代码注释生成api?于是找到以下方法 环境:vs2010 先下载安 ...
- BitMap画图
package com.example.examples_05_07; import android.content.Context; import android.graphics.Bitmap; ...
- ecshop下启用QQ在线服务,并能实时更新QQ在线状态
按照 http://blog.csdn.net/zurich1979/article/details/9082201 可轻松实现在线客服, 但是使用后发现一个问题,那就是这种情况下在线客服不能根据QQ ...
- vs2013
vs2013使用初体验 刚安装好vs2013 , 初步体验了一把, 下面是我目前感受到的改变(对比vs2012) 1. 任务栏图标变了 (左边vs2013, 右边vs2012) 2. 开始界 ...
- (转)NoSQL——Redis在win7下安装配置的学习一
NoSQL——Redis在win7下安装配置的学习一 有些也是从网上看来的 1.下载安装 Redis它没有windows的官方版本,但是又非官方的版本,到官网上去下载相应的版本,我的电脑是win7 ...
- IOS学习之路七(通过xib自定义UITableViewCell)
一.新建iOS Application工程,选择Single View Application,不要选中Use Storyboard.假设指定的是product name是:UITableViewCe ...
- jquery选择器之基本过滤选择器
<style type="text/css"> /*高亮显示*/ .highlight{ background-color: gray } </style> ...