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

Python HTTP客戶端自定義Cookie實現實例

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

Python HTTP客戶端自定義Cookie實現實例

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

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

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

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

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

然后,構造 opener 的時候加上這個 handler 就可以了:

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

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

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

相關文章

  • 連接pandas以及數組轉pandas的方法

    連接pandas以及數組轉pandas的方法

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

    Python編程argparse入門淺析

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

    Django文件存儲 自己定制存儲系統解析

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

    Python實現提取給定網頁內的所有鏈接

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

    使用Python實現租車計費系統的兩種方法

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

    python中wheel的用法整理

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

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

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

    Python異常處理知識點總結

    在本篇文章中小編給大家分享了關于Python異常處理的相關知識點以及對應的實例內容,需要的朋友們學習下。
    2019-02-02
  • python實現最小二乘法線性擬合

    python實現最小二乘法線性擬合

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

    如何基于opencv實現簡單的數字識別

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

最新評論

商水县| 准格尔旗| 滁州市| 郸城县| 昌宁县| 商丘市| 镇赉县| 龙山县| 湖口县| 巴里| 青冈县| 股票| 木里| 汝阳县| 盐源县| 平顺县| 亚东县| 资溪县| 怀仁县| 阳江市| 张家口市| 社会| 明光市| 桑日县| 根河市| 泗水县| 平塘县| 渭南市| 克拉玛依市| 海淀区| 含山县| 扬中市| 无为县| 石林| 鄂伦春自治旗| 阿拉尔市| 乌拉特前旗| 深圳市| 电白县| 万宁市| 新民市|