當前位置:
首頁 > 最新 > Python模塊——contextlib和urllib

Python模塊——contextlib和urllib

contextlib模塊

之前的內容已經提到過讀寫文件的方法,必須在使用完畢後正確關閉它們,要麼使用try...finally,要麼使用with語句。

對於with方法,實際上並不是只有讀寫文件可以用,任何對象只要實現了上下文管理,就可以用with語句。

實現上下文管理是通過 和 這兩個方法實現的。


@contextmanager

上面的寫法比較繁瑣,contextlib模塊中的 可以提供相同的功能,比如改寫上面的代碼:

@contextmanager這個decorator接受一個generator,用yield語句把with ... as var把變數輸出出去,然後,with語句就可以正常地工作了。

並且@contextmanager還能夠實現在某段代碼前後自動執行特性代碼。


如果一個對象沒有實現上下文,可以通過使用closing()來把它變為上下文對象。

closing()方法的實現非常簡單,把任意對象變為上下文對象,並支持with語句。


urllib提供了許多用於操作URL的功能。


urllib的 模塊可以非常方便地抓取URL內容,也就是發送一個GET請求到指定的頁面,然後返回HTTP的響應:

如果我們要想模擬瀏覽器發送GET請求,就需要使用Request對象,通過往Request對象添加HTTP頭,我們就可以把請求偽裝成瀏覽器。例如,模擬iPhone 6去請求豆瓣首頁:


如果要以POST發送一個請求,只需要把參數data以bytes形式傳入。下面是模擬微博登錄的代碼

如果還需要更複雜的控制,比如通過一個Proxy去訪問網站,則需要利用ProxyHandler來處理。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python入門篇-python安裝教程
你都用Python做過哪些騷操作?

TAG:Python |