Urllib 模塊

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"))
相關文章
相關標籤/搜索