Python中的urllib2模块解析
Name
urllib2 - An extensible library for opening URLs using a variety of protocols
1. Description
The simplest way to use this module is to call the urlopen function,which accepts a string containing a URL or a Request object . It opens the URL and returns the results as file-like object.
2. Classes
exceptions.IOError(exceptions.EnvironmentError)
URLError
HTTPError(URLError, urllib.addinfourl)
AbstractBasicAuthHandler
HTTPBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler)
ProxyBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler)
AbstractDigestAuthHandler
BaseHandler
AbstractHTTPHandler
HTTPHandler
HTTPSHandler
FTPHandler
CacheFTPHandler
FileHandler
HTTPCookieProcessor
HTTPDefaultErrorHandler
HTTPDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler)
HTTPErrorProcessor
HTTPRedirectHandler
ProxyDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler)
ProxyHandler
UnknownHandler
HTTPPasswordMgr
HTTPPasswordMgrWithDefaultRealm
OpenerDirector
Request
3. 两种访问网页模式:
模式1
导入模块
import urllib2
发送请求
request = urllib2.Request(url, data=None, headers={},
origin_req_host=None, unverifiable=False)
打开request对象,返回服务器相应对象
response = urllib2.urlopen(request)
输出网页代码内容
print response.read()
通过构建一个request对象,服务器响应请求得到应答,这样显得逻辑上清晰明确。
模式2
导入模块
import urllib2
打开url对象,返回服务器相应对象
response = urllib2.urlopen(url, data=None,
timeout=<object object>, cafile=None, capath=None, cadefault=False,
context=None)
输出网页代码内容
print response.read()
4. 设置Headers
很多服务器或代理服务器会查看HTTP头,进而控制网络流量,实现负载均衡,限制不正常用户的访问。所以我们要学会设置HTTP头,来保证一些访问的实现。
代码如下:
import urllib
import urllib2
url =
'http://www.server.com/login'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5;
Windows NT)'
values = {'username' :
'cqc', 'password' : 'XXXX' }
headers = { 'User-Agent'
: user_agent }
data = urllib.urlencode(values)
request =
urllib2.Request(url, data, headers)
response =
urllib2.urlopen(request)
page = response.read()
这样,我们设置了一个headers,在构建request时传入,在请求时,就加入了
headers传送,服务器若识别了是浏览器发来的请求,就会得到响应。
常见的User Agent
1.Android
Mozilla/5.0 (Linux; Android 4.1.1;
Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko)
Chrome/18.0.1025.166 Safari/535.19
Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D)
AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO)
AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
2.Firefox
Mozilla/5.0 (Windows NT 6.2; WOW64;
rv:21.0) Gecko/20100101 Firefox/21.0
Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0
3.Google Chrome
Mozilla/5.0 (Windows NT 6.2; WOW64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B)
AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile
Safari/535.19
5. 设置代理服务器
控制代理服务器,防止服务器限制IP。每隔一段时间换一个代理服务器。代理服务器的ip你可以从网页中自己选择和定期更换,控制代理服务器,每隔一段时间换一个代理服务器。代理服务器URL:http://www.xicidaili.com/
代码如下:
import urllib2
enable_proxy = True
proxy_handler =
urllib2.ProxyHandler({"http":"61.135.217.7:80"})
null_proxy_handler = urllib2.ProxyHandler({})
if enable_proxy:
opener = urllib2.build_opener(proxy_handler)
else:
opener = urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)
6. 超时设置
urlopen方法第三个参数就是timeout的设置,可以设置等待多久超时,为了解决一些网站实在响应过慢而造成的影响。
import urllib2
response = urllib2.urlopen('http://www.baidu.com',
timeout=10)
Python中的urllib2模块解析的更多相关文章
- Python中的numpy模块解析
numpy 1. 创建对象 维度(dimensions):轴 轴的个数:秩(rank) Numpy最重要的一个特点就是其N维数组对象(即ndarray) 创建数组最简单的函数就是用array函数: ...
- python中urllib, urllib2,urllib3, httplib,httplib2, request的区别
permike原文python中urllib, urllib2,urllib3, httplib,httplib2, request的区别 若只使用python3.X, 下面可以不看了, 记住有个ur ...
- Python中第三方的用于解析HTML的库:BeautifulSoup
背景 在Python去写爬虫,网页解析等过程中,比如: 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站 常常需要涉及到HTML等网页的解析. 当然,对于简单的HTML中内 ...
- Python中的logging模块就这么用
Python中的logging模块就这么用 1.日志日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICALDEBUG:详细的信息,通常只出现在诊断问题 ...
- Python中的random模块,来自于Capricorn的实验室
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- Python中的logging模块
http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...
- Python中的random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
- 浅析Python中的struct模块
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...
- python中的StringIO模块
python中的StringIO模块 标签:python StringIO 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分 ...
随机推荐
- Deno下一代Nodejs?Deno初体验
前言 Ryan Dahl之父发布了新的项目Deno,很多IT媒体都使用了标题“下一代Nodejs”,首先我们看一下Deno的特性: 1.支持typescript (nodejs目前也支持). 2.无p ...
- .Net Core2.0下使用Dapper遇到的问题
今天成功把.Net Framework下使用Dapper进行封装的ORM成功迁移到.Net Core 2.0上,在迁移的过程中也遇到一些很有意思的问题,值得和大家分享一下.下面我会还原迁移的每一个过程 ...
- 简单的将Excel数据同步到SqlServer数据库中
1.创建一个WinForm程序,添加一个Button控件 2.Button事件 private void button1_Click(object sender, EventArgs e) { Sys ...
- Python-0010-
题目: 判断101-200之间有多少素数,并输出所有素数. 程序分析: 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除则表明次数不是素数,反之是素数.用else 可以进一步简化代 ...
- Maven指定编译级别
maven默认的编译水平是1.5 单个项目单独设置 如果需要在某个项目中指定编译级别,可以在项目的pom.xml文件中配置,如下: <build> <plugins> < ...
- MySQL 批量修改某一列的值为另外一个字段的值
mysql> select * from fruit; +----+--------+-------+ | id | name | price | +----+--------+-------+ ...
- semantic-ui 图片
1.基础样式 方式一:因为图片是使用img标签,所以直接将class加载img标签中即可.不过要注意的是,class中要指定是ui image. 方式二:使用一个span或者div将img标签包裹,然 ...
- 【kindle笔记】之 《活着》-2018-2-5
[kindle笔记]读书记录-总 2018-2-5 今天凌晨一口气看完了<活着>,没想到竟然是个赤裸裸的悲剧,心情不太好地睡去. 福贵,一个小人物,坎坷无比的一生. 当你以为真他妈惨,真是 ...
- ERP & CRM
ERP流程_百度百科https://baike.baidu.com/item/ERP%E6%B5%81%E7%A8%8B/8099248 CRM_百度百科https://baike.baidu.com ...
- centOS 7下无法启动网络(service network start)错误解决办法
今天在centOS 7下更改完静态ip后发现network服务重启不了,翻遍了网络,尝试了各种方法,终于解决了. 现把各种解决方法归纳整理,希望能让后面的同学少走点歪路... 首先看问题:执行serv ...