python3 抓取网页资源的 N 种方法
2015-11-01 13:04
483 查看
1、直接调用urllib.request.urlopen打开网页
2、使用 Request
3、发送表单数据
4、发送数据和header
5、http 错误
6、异常处理1
7、异常处理2
8、HTTP 认证
9、使用代理
10、超时
import urllib.request response = urllib.request.urlopen('http://python.org/') html = response.read()
2、使用 Request
import urllib.request req = urllib.request.Request('http://python.org/') response = urllib.request.urlopen(req) the_page = response.read()
3、发送表单数据
#! /usr/bin/env python3 import urllib.parse import urllib.request url = 'http://localhost/login.php' user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' values = { 'act' : 'login', 'login[email]' : 'xxxxxxx@xxx.com', 'login[password]' : '123456' } data = urllib.parse.urlencode(values).encode('utf8') #data参数必须encode req = urllib.request.Request(url, data) req.add_header('Referer', 'http://www.python.org/') response = urllib.request.urlopen(req) the_page = response.read() print(the_page.decode("utf8"))
4、发送数据和header
#! /usr/bin/env python3 import urllib.parse import urllib.request url = 'http://localhost/login.php' user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' values = { 'act' : 'login', 'login[email]' : 'xxxxxxx@xxx.com', 'login[password]' : '123456' } headers = { 'User-Agent' : user_agent } data = urllib.parse.urlencode(values).encode('utf8') req = urllib.request.Request(url, data, headers) response = urllib.request.urlopen(req) the_page = response.read() print(the_page.decode("utf8"))
5、http 错误
#! /usr/bin/env python3 import urllib.request req = urllib.request.Request('http://www.111cn.net ') try: urllib.request.urlopen(req) except urllib.error.HTTPError as e: print(e.code) print(e.read().decode("utf8"))
6、异常处理1
#! /usr/bin/env python3 from urllib.request import Request, urlopen from urllib.error import URLError, HTTPError req = Request("http://www.111cn.net/") try: response = urlopen(req) except HTTPError as e: print('The server couldn't fulfill the request.') print('Error code: ', e.code) except URLError as e: print('We failed to reach a server.') print('Reason: ', e.reason) else: print("good!") print(response.read().decode("utf8"))
7、异常处理2
#! /usr/bin/env python3 from urllib.request import Request, urlopen from urllib.error import URLError req = Request("http://www.111cn.net/") try: response = urlopen(req) except URLError as e: if hasattr(e, 'reason'): print('We failed to reach a server.') print('Reason: ', e.reason) elif hasattr(e, 'code'): print('The server couldn't fulfill the request.') print('Error code: ', e.code) else: print("good!") print(response.read().decode("utf8"))
8、HTTP 认证
#! /usr/bin/env python3 import urllib.request password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm() top_level_url = "https://www.111cn.net/" password_mgr.add_password(None, top_level_url, 'rekfan', 'xxxxxx') handler = urllib.request.HTTPBasicAuthHandler(password_mgr) opener = urllib.request.build_opener(handler) # create "opener" (OpenerDirector instance) a_url = "https://www.111cn.net/" # use the opener to fetch a URL x = opener.open(a_url) print(x.read()) urllib.request.install_opener(opener) # All calls to urllib.request.urlopen use our opener. a = urllib.request.urlopen(a_url).read().decode('utf8') print(a)
9、使用代理
#! /usr/bin/env python3 import urllib.request proxy_support = urllib.request.ProxyHandler({'sock5': 'localhost:1080'}) opener = urllib.request.build_opener(proxy_support) urllib.request.install_opener(opener) a = urllib.request.urlopen("http://www.111cn.net ").read().decode("utf8") print(a)
10、超时
#! /usr/bin/env python3 import socket import urllib.request timeout = 2 socket.setdefaulttimeout(timeout) req = urllib.request.Request('http://www.111cn.net /') a = urllib.request.urlopen(req).read() print(a)
相关文章推荐
- Ubuntu 下为python 安装 opencv
- python os目录和文件相关操作
- python中的reduce函数
- python在Windows下将.py转换成.exe文件
- python序列化和json
- LeetCode----Remove Duplicates from Sorted List II
- python-MD5加密
- ubuntu 下python第三库 dlib 安装
- Python批量读取人脸图片与数据互相转换
- Python图片与其矩阵数据互相转换
- python-random模块
- 4.2.1 Codec基类
- Python异常(try...except)对代码运行性能的影响
- Python 通过 ACR122 修改 Mifare 1 卡数据
- python 文件读写查找、替换相关简单操作
- [LeetCode] Binary Tree Level Order Traversal
- [LeetCode] Majority Element
- python调用dll 出现[Error 193]
- Python调用DLL
- Python:Tkinter之Radiobutton