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模块解析的更多相关文章

  1. Python中的numpy模块解析

    numpy 1.  创建对象 维度(dimensions):轴 轴的个数:秩(rank) Numpy最重要的一个特点就是其N维数组对象(即ndarray) 创建数组最简单的函数就是用array函数: ...

  2. python中urllib, urllib2,urllib3, httplib,httplib2, request的区别

    permike原文python中urllib, urllib2,urllib3, httplib,httplib2, request的区别 若只使用python3.X, 下面可以不看了, 记住有个ur ...

  3. Python中第三方的用于解析HTML的库:BeautifulSoup

    背景 在Python去写爬虫,网页解析等过程中,比如: 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站 常常需要涉及到HTML等网页的解析. 当然,对于简单的HTML中内 ...

  4. Python中的logging模块就这么用

    Python中的logging模块就这么用 1.日志日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICALDEBUG:详细的信息,通常只出现在诊断问题 ...

  5. Python中的random模块,来自于Capricorn的实验室

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  6. Python中的logging模块

    http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...

  7. Python中的random模块

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  8. 浅析Python中的struct模块

    最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结. 了解c语言 ...

  9. python中的StringIO模块

    python中的StringIO模块 标签:python StringIO 此模块主要用于在内存缓冲区中读写数据.模块是用类编写的,只有一个StringIO类,所以它的可用方法都在类中.此类中的大部分 ...

随机推荐

  1. 通过 Systemd Journal 收集日志

    随着 systemd 成了主流的 init 系统,systemd 的功能也在不断的增加,比如对系统日志的管理.Systemd 设计的日志系统好处多多,这里笔者就不再赘述了,本文笔者主要介绍 syste ...

  2. virtualenv虚拟环境的使用

    前提条件:安装好python环境并配置好环境变量(可参考另一篇博文,python安装及配置) 1.打开cmd命令终端 pip3 install virtualenvwrapper-win(我电脑上面已 ...

  3. Python容器

    列表 list 1.列表的格式为,把值放入[ ]中 >>> lis = ['a', 1, ['a', 'c', 1]] 2.列表中可以嵌套任何类型 索引 因为列表是有序的,那么我们可 ...

  4. Python_列表初识及操作

    列表 列表初识 列表属于容器性数据类型. li = [123, '狗', True, [1, 2, 3], {'name': 'Lon'}, (1, 2, 3)] 其中包含有int型,例如123:字符 ...

  5. Python_生产者消费者模型、管道、数据共享、进程池

    1.生产者消费者模型 生产者 —— 生产数据的人 消费者 —— 消费数据的人 生产者消费者模型:供销数据不平衡的现象. import time import random from multiproc ...

  6. 解决只能root权限登陆mysql的问题

    一.问题描述 在用sqoop连接mysql时,会报错如下图所示,原因是mysql在默认情况下是使用了auth_socket plugin进行认证,即每次登陆都需要sudo mysql -u local ...

  7. 从Mongo导出数据库到Excel

    在MongoDB的安装目录的bin文件夹下打开命令行: ./mongoexport -d kugou_db -c songs -f rank,singer,song,time --type=csv - ...

  8. css行内省略号、垂直居中

    应用场景分析: 一.当你的文字限定行数,超出部分的文字用省略号显示. (有两个使用场景:1.单行 2.多行) // 单行 overflow: hidden; text-overflow:ellipsi ...

  9. 利用js给datalist或select动态添加option选项

    <!DOCTYPE html> <html> <head> <title>鼠标点击时加载</title> <script type=& ...

  10. Python 基础知识----流程控制

    判断语句 循环语句 嵌套