最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python HTTP客戶端自定義Cookie實現(xiàn)實例

 更新時間:2017年04月28日 15:09:51   投稿:lqh  
這篇文章主要介紹了Python HTTP客戶端自定義Cookie實現(xiàn)實例的相關(guān)資料,需要的朋友可以參考下

Python HTTP客戶端自定義Cookie實現(xiàn)實例

幾乎所有腳本語言都提供了方便的 HTTP 客戶端處理的功能,Python 也不例外,使用 urllib 和 urllib2 可以很方便地進行 HTTP GET 和 POST 等各種操作。并且還允許以類似于插件的形式加入一些 handler ,來定制 request 和 response ,比如代理的支持和 cookie 的支持都是這樣添加進來的。具體來說,通過如下方式構(gòu)造一個 opener :

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())

然后這個 opener 就可以處理 cookie 了,相當方便,并且可定制性也……好吧,總之,現(xiàn)在我希望能在客戶端手動插入一些 cookie 值,但是不管是 HTTPCookieProcessor 還是 cookielib 里的 CookieJar 都沒有提供類似的方法可以來實現(xiàn)。

看起來,也并不是我一個人有這樣的需求,因為我在查找解決方案的時候,還找到了有人給 Python 提交的這個 Patch,就是添加這個功能。不過看起來好像還沒有被 accept 的樣子,這樣對標準庫做暴力 patch 的方式可移植性似乎也不好。所以我還是另外找了解決方案,其實也很簡單:看了 HTTPCookieProcessor 的實現(xiàn)代碼之后,發(fā)現(xiàn)我可以做類似的事情,也就是在寫一個 handler ,把我想要的 cookie 值強制放到 request 對象的 header 中去。

于是我查了 Python 的文檔,對于 handler 的接口好像幾乎沒有描述,于是我就照著 HTTPCookieProcessor 來寫了。這個 handler 應(yīng)該放在正常的 cookie 處理 handler 的后面,然后檢查已經(jīng)存在的 cookie header ,再進行合并一下。不過比較詭異的是在 Python 的文檔里并沒有找到 Request 對象有 get_header 之類的方法可以得到已經(jīng)存在的 header 項的值,覺得很詭異,于是直接查了源代碼,才找到了,確實有這個方法。之前有聽人說過 Ruby 的文檔做得如何如何的爛,Python 的文檔做得如何如何的好,我雖然沒覺得 Ruby 的文檔很爛,但是也覺得 Python 的文檔確實不錯,我最喜歡它末尾的 Examples 。兩個文檔系統(tǒng)倒是走的不同的路,Ruby 的文檔是從代碼中抽?。ㄌ囟ǜ袷降模┳⑨寔碜詣由傻?,類似于 javadoc ;而 Python 現(xiàn)在用的是獨立于源代碼的文檔系統(tǒng),人工寫的,不過到頭來居然連函數(shù)都漏掉了,可見人工維護文檔的弊端還是很明顯的。其實我見過的文檔系統(tǒng),最好用的應(yīng)該還是屬于 Emacs/Elisp 了吧。 不過,廢話少講,handler 如下:

class SimpleCookieHandler(urllib2.BaseHandler):
 def http_request(self, req):
  simple_cookie = 'cc98Simple=1'
  if not req.has_header('Cookie'):
   req.add_unredirected_header('Cookie', simple_cookie)
  else:
   cookie = req.get_header('Cookie')
   req.add_unredirected_header('Cookie', simple_cookie + '; ' + cookie)
  return req

然后,構(gòu)造 opener 的時候加上這個 handler 就可以了:

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(), 
SimpleCookieHandler())

但總歸是一個 workaround ,期待那個 patch 被加入到標準庫中吧。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 連接pandas以及數(shù)組轉(zhuǎn)pandas的方法

    連接pandas以及數(shù)組轉(zhuǎn)pandas的方法

    今天小編就為大家分享一篇連接pandas以及數(shù)組轉(zhuǎn)pandas的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python編程argparse入門淺析

    Python編程argparse入門淺析

    這篇文章主要介紹了Python編程argparse入門淺析,分享了相關(guān)代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Django文件存儲 自己定制存儲系統(tǒng)解析

    Django文件存儲 自己定制存儲系統(tǒng)解析

    這篇文章主要介紹了Django文件存儲 自己定制存儲系統(tǒng)解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python實現(xiàn)提取給定網(wǎng)頁內(nèi)的所有鏈接

    Python實現(xiàn)提取給定網(wǎng)頁內(nèi)的所有鏈接

    這篇文章主要和大家分享一個實用的Python腳本,可以實現(xiàn)從給定的網(wǎng)頁中檢索所有鏈接,并將其保存為txt文件,需要的小伙伴可以收藏一下
    2023-05-05
  • 使用Python實現(xiàn)租車計費系統(tǒng)的兩種方法

    使用Python實現(xiàn)租車計費系統(tǒng)的兩種方法

    本文通過兩種方法給大家分享了使用Python實現(xiàn)租車計費系統(tǒng),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • python中wheel的用法整理

    python中wheel的用法整理

    在本篇文章里小編給大家整理的是關(guān)于python中wheel的用法整理內(nèi)容,需要的朋友們可以跟著學(xué)習(xí)下。
    2020-06-06
  • python爬蟲教程之爬取百度貼吧并下載的示例

    python爬蟲教程之爬取百度貼吧并下載的示例

    這篇文章主要介紹了python爬取百度貼吧整個html文件下載到本地的示例,需要的朋友可以參考下
    2014-03-03
  • Python異常處理知識點總結(jié)

    Python異常處理知識點總結(jié)

    在本篇文章中小編給大家分享了關(guān)于Python異常處理的相關(guān)知識點以及對應(yīng)的實例內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • python實現(xiàn)最小二乘法線性擬合

    python實現(xiàn)最小二乘法線性擬合

    這篇文章主要為大家詳細介紹了python實現(xiàn)最小二乘法線性擬合,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 如何基于opencv實現(xiàn)簡單的數(shù)字識別

    如何基于opencv實現(xiàn)簡單的數(shù)字識別

    現(xiàn)在很多場景需要使用的數(shù)字識別,比如銀行卡識別,以及車牌識別等,在AI領(lǐng)域有很多圖像識別算法,大多是居于opencv 或者谷歌開源的tesseract 識別,下面這篇文章主要給大家介紹了關(guān)于如何基于opencv實現(xiàn)簡單的數(shù)字識別,需要的朋友可以參考下
    2021-09-09

最新評論

山阴县| 龙南县| 呼和浩特市| 克什克腾旗| 济南市| 罗定市| 蕲春县| 临夏市| 项城市| 桂林市| 乡城县| 达州市| 庐江县| 平定县| 华池县| 内黄县| 淳安县| 青川县| 泗阳县| 台北县| 沙坪坝区| 茂名市| 襄垣县| 乌拉特前旗| 南京市| 文山县| 闽清县| 濮阳市| 东安县| 武汉市| 彭山县| 平塘县| 红原县| 汤阴县| 化隆| 绵竹市| 静宁县| 和林格尔县| 伊金霍洛旗| 加查县| 桓仁|