Python模塊——contextlib和urllib
最新
04-06
contextlib模塊
之前的內容已經提到過讀寫文件的方法,必須在使用完畢後正確關閉它們,要麼使用try...finally,要麼使用with語句。
對於with方法,實際上並不是只有讀寫文件可以用,任何對象只要實現了上下文管理,就可以用with語句。
實現上下文管理是通過 和 這兩個方法實現的。
@contextmanager
上面的寫法比較繁瑣,contextlib模塊中的 可以提供相同的功能,比如改寫上面的代碼:
@contextmanager這個decorator接受一個generator,用yield語句把with ... as var把變數輸出出去,然後,with語句就可以正常地工作了。
並且@contextmanager還能夠實現在某段代碼前後自動執行特性代碼。
@closing
如果一個對象沒有實現上下文,可以通過使用closing()來把它變為上下文對象。
closing()方法的實現非常簡單,把任意對象變為上下文對象,並支持with語句。
urllib模塊
urllib提供了許多用於操作URL的功能。
Get
urllib的 模塊可以非常方便地抓取URL內容,也就是發送一個GET請求到指定的頁面,然後返回HTTP的響應:
如果我們要想模擬瀏覽器發送GET請求,就需要使用Request對象,通過往Request對象添加HTTP頭,我們就可以把請求偽裝成瀏覽器。例如,模擬iPhone 6去請求豆瓣首頁:
Post
如果要以POST發送一個請求,只需要把參數data以bytes形式傳入。下面是模擬微博登錄的代碼
Handler
如果還需要更複雜的控制,比如通過一個Proxy去訪問網站,則需要利用ProxyHandler來處理。
※Python入門篇-python安裝教程
※你都用Python做過哪些騷操作?
TAG:Python |