urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些关于header,代理,超时,认证,异常处理处理方法,下面一起来看看。

python3 抓取网页资源的 N 种方法

1、最简单

1 import urllib.request
2
3 response = urllib.request.urlopen('http://python.org/')
4
5 html = response.read()

2、使用 Request

1 import urllib.request
2
3 req = urllib.request.Request('http://python.org/')
4
5 response = urllib.request.urlopen(req)
6
7 the_page = response.read()

3、发送数据

 1 #! /usr/bin/env python3
2
3 import urllib.parse
4
5 import urllib.request
6
7 url = 'http://localhost/login.php'
8
9 user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
10
11 values = { 'act' : 'login', 'login[email]' : 'abc@abc.com', 'login[password]' : '123456' }
12
13 data = urllib.parse.urlencode(values)
14
15 req = urllib.request.Request(url, data)
16
17 req.add_header('Referer', 'http://www.python.org/')
18
19 response = urllib.request.urlopen(req)
20
21 the_page = response.read()
22
23 print(the_page.decode("utf8"))

4、发送数据和header

 1 #! /usr/bin/env python3
2
3 import urllib.parse
4
5 import urllib.request
6
7 url = 'http://localhost/login.php'
8
9 user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
10
11 values = { 'act' : 'login', 'login[email]' : 'abc@abc.com', 'login[password]' : '123456' }
12
13 headers = { 'User-Agent' : user_agent }
14
15 data = urllib.parse.urlencode(values)
16
17 req = urllib.request.Request(url, data, headers)
18
19 response = urllib.request.urlopen(req)
20
21 the_page = response.read()
22
23 print(the_page.decode("utf8"))

5、http 错误

 1 #! /usr/bin/env python3
2
3 import urllib.request
4
5 req = urllib.request.Request('http://python.org/')
6
7 try:
8
9   urllib.request.urlopen(req)
10
11 except urllib.error.HTTPError as e:
12
13   print(e.code)
14
15 print(e.read().decode("utf8"))

6、异常处理1

 1 #! /usr/bin/env python3
2
3 from urllib.request import Request, urlopen
4
5 from urllib.error import URLError, HTTPError
6
7 req = Request('http://www.python.org/')
8
9 try:
10
11   response = urlopen(req)
12
13 except HTTPError as e:
14
15   print('The (www.python.org)server couldn't fulfill the request.')
16
17   print('Error code: ', e.code)
18
19 except URLError as e:
20
21   print('We failed to reach a server.')
22
23   print('Reason: ', e.reason)
24
25 else:
26
27   print("good!")
28
29   print(response.read().decode("utf8"))

7、异常处理2

 1 #! /usr/bin/env python3
2
3 from urllib.request import Request, urlopen
4
5 from urllib.error import URLError
6
7 req = Request("http://www.python.org/")
8
9 try:
10
11   response = urlopen(req)
12
13 except URLError as e:
14
15   if hasattr(e, 'reason'):
16
17     print('We failed to reach a server.')
18
19     print('Reason: ', e.reason)
20
21   elif hasattr(e, 'code'):
22
23     print('The server couldn't fulfill the request.')
24
25     print('Error code: ', e.code)
26
27 else: print("good!")
28
29   print(response.read().decode("utf8"))

8、HTTP 认证

 1 #! /usr/bin/env python3
2
3 import urllib.request
4
5 # create a password manager
6
7 password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
8
9 # Add the username and password.
10
11 # If we knew the realm, we could use it instead of None.
12
13 top_level_url = "https://www.python.org/"
14
15 password_mgr.add_password(None, top_level_url, 'rekfan', 'xxxxxx')
16
17 handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
18
19 # create "opener" (OpenerDirector instance)
20
21 opener = urllib.request.build_opener(handler)
22
23 # use the opener to fetch a URL
24
25 a_url = "https://www.python.org/"
26
27 x = opener.open(a_url)
28
29 print(x.read())
30
31 # Install the opener.
32
33 # Now all calls to urllib.request.urlopen use our opener.
34
35 urllib.request.install_opener(opener)
36
37 a = urllib.request.urlopen(a_url).read().decode('utf8')
38
39 print(a)

9、使用代理

 1 #! /usr/bin/env python3
2
3 import urllib.request
4
5 proxy_support = urllib.request.ProxyHandler({'sock5': 'localhost:1080'})
6
7 opener = urllib.request.build_opener(proxy_support)
8
9 urllib.request.install_opener(opener)
10
11 a = urllib.request.urlopen("http://www.python.org/").read().decode("utf8")
12
13 print(a)

10、超时

 1 #! /usr/bin/env python3
2
3 import socket
4
5 import urllib.request
6
7 # timeout in seconds
8
9 timeout = 2
10
11 socket.setdefaulttimeout(timeout)
12
13 # this call to urllib.request.urlopen now uses the default timeout
14
15 # we have set in the socket module
16
17 req = urllib.request.Request('http://www.python.org/')
18
19 a = urllib.request.urlopen(req).read()
20
21 print(a)

来源:http://www.cnblogs.com/ifso/p/4707135.html

【转】Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)的更多相关文章

  1. Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)

    urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...

  2. Python3中urllib详细使用方法(header,代理,超时,认证,异常处理) 转

    urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...

  3. Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)_python

    我们可以利用urllib来抓取远程的数据进行保存哦,以下是python3 抓取网页资源的多种方法,有需要的可以参考借鉴. 1.最简单 import urllib.request response = ...

  4. Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)

    出自  http://www.jb51.net/article/93125.htm

  5. Python2和Python3中urllib库中urlencode的使用注意事项

    前言 在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包 ...

  6. python3中使用builtwith的方法(很详细)

    1. 首先通过pip install builtwith安装builtwith C:\Users\Administrator>pip install builtwith Collecting b ...

  7. python3中urllib库的request模块详解

    刚刚接触爬虫,基础的东西得时时回顾才行,这么全面的帖子无论如何也得厚着脸皮转过来啊! 原帖地址:https://www.2cto.com/kf/201801/714859.html 什么是 Urlli ...

  8. Python3中Urllib库基本使用

    什么是Urllib? Python内置的HTTP请求库 urllib.request          请求模块 urllib.error              异常处理模块 urllib.par ...

  9. python3中urllib的基本使用

    urllib 在python3中,urllib和urllib2进行了合并,现在只有一个urllib模块,urllib和urllib2的中的内容整合进了urllib.request,urlparse整合 ...

随机推荐

  1. Node.JS开发环境准备

    1.安装Nodejs的Windows包. 官网:http://nodejs.org/ 2.可以使用cmd运行nodejs项目,命令格式: node  文件名.js node  文件名 3.对于不熟悉的 ...

  2. JAVA基本数据类型和引用数据类型的区别

    [基本数据类型] 基本数据类型:声明时直接在栈内存中开辟空间,并直接在当前内存中存放数据,赋值时传递的是变量中的值,总的来说,基本数据类型是传值的. [引用数据类型] 声明引用数据类型(数组或对象), ...

  3. 记录一则ASM实例阻塞,rbal进程异常的案例

    1.故障现象描述 2.确认故障现象 3.排查ASM层面 4.解决问题 1.故障现象描述 环境:AIX 7.1 + Standalone Oracle 11.2.0.4 现象:客户反映某11g版本的AD ...

  4. Python中列表、元组、字典增删改查基本区别

    1.定义: 列表:num = ["a","b"."c"] ##定义后可增删改查 元组:num = ("a"," ...

  5. 设计模式 --> (12)装饰模式

    装饰模式 时常会遇到这样一种情况,我已经设计好了一个接口,并且也有几个实现类,但是这时我发现我设计的时候疏忽了,忘记了一些功能,或者后来需求变动要求加入一 些功能,最简单的做法就是修改接口,添加函数, ...

  6. poj 3696 The Luckiest Number

    The Luckiest Number 题目大意:给你一个int范围内的正整数n,求这样的最小的x,使得:连续的x个8可以被n整除. 注释:如果无解输出0.poj多组数据,第i组数据前面加上Case ...

  7. linux No space left on device 由索引节点(inode)爆满引发500问题

    inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取 ...

  8. 关于VR开发中的穿墙问题随想

    在VR开发中,用户将以第一人称的视角进入虚拟世界,即用户同时身处两个坐标系:1. 现实世界坐标系(如房间的坐标系),用户的身体处于这个坐标系 2. VR世界坐标系,用户的感官处于这个坐标系,即用户觉得 ...

  9. 转载:lua中switch

    刚开始使用lua的人肯定会不满lua居然没有switch这个语法. 但是熟悉lua的强大特性之后,你会发现其实switch是完全没有必要提供的^.^,因为lua有强大的table和function 例 ...

  10. 使用Python的requests模块编写请求脚本

    requests模块可用来编写请求脚本. 比如,使用requests的post函数可以模拟post请求: resp = requests.post(url, data = content) url即为 ...