Python urllib简单使用
Python的urllib和urllib2模块都做与请求URL相关的操作。
它们最显著的差异为:
urllib2可以接受一个Request对象,并以此可以来设置一个URL的headers,但是urllib只接收一个URL。
urllib模块可以提供进行urlencode的方法,该方法用于GET查询字符串的生成,urllib2的不具有这样的功能.
python 2.7.x提供了urllib与urllib2,鉴于上述异同两个库通常搭配使用。
urlopen
urllib2.urlopen(url, *data, *timeout)
urlopen方法是urllib2模块最常用的方法,用于访问发送某一请求。
url参数可以是一个字符串url或者是一个Request对象。
可选参数timeout用于设置超时时间,以秒为单位。
如果没有指定,将使用设置的全局默认timeout值。
urlopen使用默认opener进行访问, 为阻塞式IO.
如果请求成功,函数将返回响应。
在data为None时默认用GET方法:
import urllib2 response = urllib2.urlopen('http://python.org/') html = response.read() print(html)
使用POST发送参数前需要先将参数编码:
import urllib import urllib2 values = { 'action': 'sign-in', 'username': 'finley', 'password': '1234' } values = urllib.urlencode(values) response = urllib2.urlopen('http://127.0.0.1:8080/game', values) print(response.read())
urllib.urlencode不能直接进行Unicode编码,需要先进行转码:
urllib.urlencode (u'bl'.encode('utf-8'))
qutoe与urlencode均可以进行编码,区别在于quote的空格由%20
替代而urlencode的空格由+替代。
Request
使用Request对象可以设置更多请求参数:
Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
-
url: url字符串
-
data:额外发送的数据
在data为None时默认用GET方法提交,有参数时默认用POST方法提交
示例:
import urllib import urllib2 url = 'http://127.0.0.1:8080/game' values = { 'action': 'sign-in', 'username': 'finley', 'password': '1234' } data = urllib.urlencode(values) request = urllib2.Request(url, data) response = urllib2.urlopen(request) html = response.read()
cookie
为了使用cookie我们需要一个opener对象来维护cookiejar.
class BaseDriver: def __init__(self): self.opener = None self.cookiejar = None self.initOpener() def initOpener(self): self.cookiejar = cookielib.CookieJar() self.opener = urllib2.build_opener( urllib2.HTTPCookieProcessor(self.cookiejar) ) def get_cookie(self): for cookie in self.cookiejar: if cookie.name == 'csrftoken': return cookie.value return None def doRequest(self, action, values): data = urllib.urlencode(values) request = urllib2.Request(url, data) return self.opener.open(request)
参考资料:
urllib与urllib2的学习总结(python2.7.X)
原文地址:https://www.cnblogs.com/Finley/p/5379691.html
相关推荐
-
做一个时光回忆录小软件当作情人节礼物 python基础
2020-6-17
-
Linux下I/O多路复用select, poll, epoll 三种模型的Python使用 python基础
2020-5-31
-
利用Python实现报告自动生成 python基础
2019-2-21
-
Python魔法方法__getattr__和__getattribute__详解 python基础
2019-6-27
-
Python中文转拼音 python基础
2019-8-25
-
python flask_restful接口开发入门 python基础
2020-6-17
-
Python的生成器 python基础
2019-9-18
-
《机器学习Python实现_07_03_svm_核函数与非线性支持向量机》 python基础
2020-6-11
-
python之socket编程 python基础
2019-8-18
-
Kaggle竞赛入门(一):决策树算法的Python实现 python基础
2020-6-11