Urllib模块html
在python2和python3中的差别 在python2中,urllib和urllib2各有各个的功能,虽然urllib2是urllib的升级版,可是urllib2仍是不能彻底替代urllib,可是在python3中,所有封装成一个类,urllibpython
在python2和python3中的差别 Urllib2能够接受一个Request对象,并以此能够来设置一个URL的headers,可是urllib只接受一个URL。这就意味着你不能经过urllib假装本身的请求头。 Urllib模板能够提供运行urlencode的方法,该方法用于GET查询字符串的生成,urllib2的不具有这样的功能,并且urllib.quote等一系列quote和unquote功能没有被加入urllib2中,所以有时也须要urllib的辅助。这就是urllib和urllib2一块儿使用的缘由. quote用来url转码的网站
经过urllib下载图片并保存ui
#!/usr/bin/env python
#coding:utf8
import urllib3
from urllib import request
import codecs
url = "http://5b0988e595225.cdn.sohucs.com/images/20170926/b2d72c4b34c84f94b2ceb639a56de24f.jpeg"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"}
req = request.Request(url=url,headers=headers)
res = request.urlopen(req)
context = res.read()
with codecs.open("wx.jpg","wb") as fd:
fd.write(context)
# request.urlretrieve(url,"wx.jpg")
下载的test1.jpgurl
urllib.request.urlopen(url, data=None, timeout=None)
url 须要打开的网站
data
psot提交的数据
Timeout 网站访问的超时时间
可是无法假装咱们的头信息
from urllib import request
req = request.Request(url, headers=headers, data=data)
html = request.urlopen(req).read()spa
经过上节获取的IP实现代理:代理
#!/usr/bin/env python #coding:utf8 from urllib import request, parse data = { 'first': 'true', 'pn': 1, 'kd': 'Python' } url = 'http://2017.ip138.com/ic.asp' proxy = request.ProxyHandler({'http':'61.155.164.109:3128'}) # 设置proxy opener = request.build_opener(proxy) # 挂载opener # opener = request.build_opener() # 挂载opener request.install_opener(opener) # 安装opener data = parse.urlencode(data).encode('utf-8') page = opener.open(url, data).read() print(type(page)) print(page.decode("gbk"))