欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中urllib與urllib2模塊的變化與使用詳解

 更新時間:2023年05月18日 10:18:59   作者:FLy_鵬程萬里  
urllib是python提供的一個用于操作URL的模塊,在python2.x中有URllib庫,也有Urllib2庫,在python3.x中Urllib2合并到了Urllib中,我們爬取網(wǎng)頁的時候需要經(jīng)常使用到這個庫,需要的朋友可以參考下

什么是urllib

urllib是python提供的一個用于操作URL的模塊,在python2.x中有URllib庫,也有Urllib2庫,在python3.x中Urllib2合并到了Urllib中,我們爬取網(wǎng)頁的時候需要經(jīng)常使用到這個庫。

升級合并之后,模塊中包的位置變化的地方比較多。在此,我們總結(jié)并為大家列舉一些常見的位置變動,方便之前用python2.x的朋友在使用python3.x的時候可以快速的掌握,其他的在用到的時候再具體為大家講解。

常見的變化有:

  • python2.x中使用import urllib2——————對應的,在python3.x中會使用import urllib.request,urllib.error。
  • 在python2.x中使用import urllib——————對應的,在python3.x中會使用import urlli.request,urllib.error
  • 在python2.x中使用import urlparse—————對應的,在python3.x中會使用import urllib.parse
  • 在python2.x中使用import urllib2——————對應的,在python3.x中會使用import urllib.request,urllib.error
  • 在python2.x中使用urllib2.urlopen——————對應的,在python3.x中會使用import urllib.request.urlopen
  • 在python2.x中使用urllib.quote——————對應的,在python3.x中會使用import urllib.request.quote
  • 在python2.x中使用cookielib.CoolieJar——————對應的,在python3.x中會使用Http.CookieJar
  • 在python2.x中使用urllib2.Request————對應的,在python3.x中會使用urllib.request.Request。

以上是對urllib相關模塊中從python2.x到python3.x的常見的一些變動,如果之前使用的是python2.x版本或者在網(wǎng)上閱讀關于python2.x的代碼,可以根據(jù)以上對應關系寫出python3.x程序

urllib與urllib2函數(shù)庫使用說明

(1)def urlopen(url,data=None,proxies=None)

參數(shù)說明:

  • url:需要打開的網(wǎng)址(必須符合URL規(guī)范)
  • data:向指定的URL發(fā)送的數(shù)據(jù)字符串,Get或者POST都可以,但是必須符合標準格式,格式為:
    • key1=value1&key2=value2.................
  • proxies:代理服務器地址字典,如果未指定,在window平臺上則根據(jù)IE的設置不支持需要驗證的代理服務器。

返回值說明:urlopen返回一個類文件對象,該類文件有如下方法:

  • read(),readline(),readlines(),fileno(),close():這些方法的使用方式與文件對象完全一樣;
  • info():返回一個httplib.HTTPMessage對象,表示遠程服務器返回的消息;
  • getcode():返回HTTP狀態(tài)碼。如果是HTTP請求,200表示請求成功完成,404表示資源不存在或未找到。

代碼實例:

#encoding:utf-8
import urllib
baidu=urllib.urlopen('http://www.baidu.com')
print "http header:\n",baidu.info()
print 'http status:\n',baidu.getcode()
print 'url:\n',baidu.geturl()
for i in baidu:
    print(i)
baidu.close()

運行結(jié)果:

(2)def urlretrieve(url, filename=None, reporthook=None, data=None)

參數(shù)說明:

  • url:符合URL規(guī)范的字符串
  • filename:本地文件路徑的字符串,從URL返回的數(shù)據(jù)將保存在該文件中,如果設置為None則生成一個臨時文件。
  • reporthook:一個函數(shù)引用,當連接上服務器、以及相應的數(shù)據(jù)庫傳輸完畢的時候會觸發(fā)該函數(shù),我們可以利用這個函數(shù)來顯示當前的下載進度等等。

我們可以任意定義該函數(shù)的行為,只需要保證函數(shù)有三個參數(shù):

  • 第一個參數(shù):為目前為止傳遞的數(shù)據(jù)塊數(shù)量
  • 第二個參數(shù):為每個數(shù)據(jù)塊的大小,單位為byte
  • 第三個參數(shù):為文件總的大?。承r候可能為-1)

data:向指定的URL發(fā)送的數(shù)據(jù)字符串,Get和Post都可以,但是必須符合標準格式:

key1=value1&key2=value2..........

函數(shù)返回值:返回一個元組(filename,headers),filename為參數(shù)總的filename,header為從服務器傳回來的MIME的類型。

實例:

#encoding:utf-8
import urllib
def do(a,b,c):
    """回調(diào)函數(shù)
    @a: 已經(jīng)下載的數(shù)據(jù)塊
    @b: 數(shù)據(jù)塊的大小
    @c: 遠程文件的大小
    """
    per = 100.0 * a * b / c    
    if per > 100:    
        per = 100    
    print '%.2f%%' % per
url='http://www.baidu.com'
local="I:\python\StoreData\hello.html"
urllib.urlretrieve(url,local,do)

運行結(jié)果顯示:

(3)其他函數(shù)

  • urllib.quote(string[, safe]):對字符串進行編碼。參數(shù)safe指定了不需要編碼的字符;
  • urllib.unquote(string) :對字符串進行解碼;
  • urllib.quote_plus(string[,safe]) :與urllib.quote類似,但這個方法用'+'來替換' ',而quote用'%20'來代替' '
  • urllib.unquote_plus(string) :對字符串進行解碼;
  • urllib.urlencode(query[, doseq]):將dict或者包含兩個元素的元組列表轉(zhuǎn)換成url參數(shù)。例如 字典{'name': 'dark-bull', 'age': 200}將被轉(zhuǎn)換為"name=dark-bull&age=200"
  • urllib.pathname2url(path):將本地路徑轉(zhuǎn)換成url路徑;
  • urllib.url2pathname(path):將url路徑轉(zhuǎn)換成本地路徑;
import urllib
data = 'name = ~a+3'
data1 = urllib.quote(data)
print data1  # result: name%20%3D%20%7Ea%2B3
print urllib.unquote(data1)  # result: name = ~a+3
data2 = urllib.quote_plus(data)
print data2  # result: name+%3D+%7Ea%2B3
print urllib.unquote_plus(data2)  # result: name = ~a+3
data3 = urllib.urlencode({'name': 'dark-bull', 'age': 200})
print data3  # result: age=200&name=dark-bull
data4 = urllib.pathname2url(r'd:/a/b/c/23.php')
print data4  # result: ///D|/a/b/c/23.php
print urllib.url2pathname(data4)  # result: D:/a/b/c/23.php

運行結(jié)果:

urllib、urllib2代碼實戰(zhàn)測試

(1)簡單讀取網(wǎng)頁信息

#coding:utf-8
import  urllib
response=urllib.urlopen('http://www.baidu.com')
print response.read()

運行結(jié)果:

到此這篇關于Python中urllib與urllib2模塊的變化與使用詳解的文章就介紹到這了,更多相關Python的urllib與urllib2模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python中os模塊的12種用法總結(jié)

    Python中os模塊的12種用法總結(jié)

    OS?(?Operating?System?操作系統(tǒng)?)?操作系統(tǒng)模塊;它是屬于python的標準庫,常用于處理文件和目錄(文件夾)的操作。本文為大家總結(jié)了這個模塊的12種用法,希望有所幫助
    2022-08-08
  • 使用Mac時psycopg2導入PyCharm失敗的解決

    使用Mac時psycopg2導入PyCharm失敗的解決

    這篇文章主要介紹了使用Mac時psycopg2導入PyCharm失敗的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)類型詳解(內(nèi)置數(shù)據(jù)容器)

    Python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)類型詳解(內(nèi)置數(shù)據(jù)容器)

    在?Python?中,字典(dict)是一種非常常用的數(shù)據(jù)結(jié)構(gòu),用于存儲鍵值對,這篇文章給大家介紹Python中內(nèi)置的數(shù)據(jù)結(jié)構(gòu)類型詳解(內(nèi)置數(shù)據(jù)容器),感興趣的朋友一起看看吧
    2025-04-04
  • Python標準庫使用OrderedDict類的實例講解

    Python標準庫使用OrderedDict類的實例講解

    今天小編就為大家分享一篇關于Python標準庫使用OrderedDict類的實例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Python實現(xiàn)QR碼的代碼詳解

    Python實現(xiàn)QR碼的代碼詳解

    這篇博客將分為五個部分,詳細介紹QR碼的生成原理、底層實現(xiàn),并使用Python代碼實現(xiàn),采用面向?qū)ο蟮木幊趟悸?使用合適的設計模式進行案例展示,每個案例將包含完整代碼和詳細解釋,需要的朋友可以參考下
    2024-11-11
  • python上下文管理器協(xié)議的實現(xiàn)

    python上下文管理器協(xié)議的實現(xiàn)

    這篇文章主要介紹了python上下文管理器協(xié)議的實現(xiàn),在python中所有實現(xiàn)了上下文管理器協(xié)議的對象 都可以用使用with操作,with啟動了對象的上下文管理器
    2022-06-06
  • 使用python實現(xiàn)多維數(shù)據(jù)降維操作

    使用python實現(xiàn)多維數(shù)據(jù)降維操作

    今天小編就為大家分享一篇使用python實現(xiàn)多維數(shù)據(jù)降維操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python 讀寫中文json的實例詳解

    python 讀寫中文json的實例詳解

    這篇文章主要介紹了 python 讀寫中文json的實例詳解的相關資料,希望通過本文能幫助到大家,讓大家掌握這樣的內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • Python中海象運算符:=的實現(xiàn)

    Python中海象運算符:=的實現(xiàn)

    海象運算符(:=)是Python3.8引入的新特性,用于在表達式中同時完成賦值和返回值操作,本文就來介紹一下Python中海象運算符:=的實現(xiàn),感興趣的可以了解一下
    2025-02-02
  • 如何使用 Python 中的功能和庫創(chuàng)建 n-gram

    如何使用 Python 中的功能和庫創(chuàng)建 n-gram

    在計算語言學中,n-gram 對于語言處理、上下文和語義分析非常重要,它們是從令牌字符串中相鄰的連續(xù)單詞序列,本文將討論如何使用 Python 中的功能和庫創(chuàng)建 n-gram,感興趣的朋友一起看看吧
    2023-09-09

最新評論