<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        使用基于Python的Tornado框架的HTTP客戶端的教程

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:39:36
        文檔

        使用基于Python的Tornado框架的HTTP客戶端的教程

        使用基于Python的Tornado框架的HTTP客戶端的教程:由于tornado內(nèi)置的AsyncHTTPClient功能過于單一, 所以自己寫了一個基于Tornado的HTTP客戶端庫, 鑒于自己多處使用了這個庫, 所以從項目中提取出來, 寫成一個單獨庫 tornadohttpclient TornadoHTTPClient 是一個基于Tornado的高效的異步H
        推薦度:
        導(dǎo)讀使用基于Python的Tornado框架的HTTP客戶端的教程:由于tornado內(nèi)置的AsyncHTTPClient功能過于單一, 所以自己寫了一個基于Tornado的HTTP客戶端庫, 鑒于自己多處使用了這個庫, 所以從項目中提取出來, 寫成一個單獨庫 tornadohttpclient TornadoHTTPClient 是一個基于Tornado的高效的異步H

        由于tornado內(nèi)置的AsyncHTTPClient功能過于單一, 所以自己寫了一個基于Tornado的HTTP客戶端庫, 鑒于自己多處使用了這個庫, 所以從項目中提取出來, 寫成一個單獨庫 tornadohttpclient

        TornadoHTTPClient 是一個基于Tornado的高效的異步HTTP客戶端庫, 支持Cookie和代理, 目前僅在Python2.7平臺上測試過, 不支持Python3

        聽取了仙子君的意見, 直接對tornado.curl_httpclient.CurlAsyncHTTPClient進行封裝
        安裝

        首先從git clone 下代碼

        git clone https://github.com/coldnight/tornadohttpclient.git
        
        

        然后安裝它

        cd tornadohttpclient
        python setup.py install
        
        

        教程
        GET

        TornadoHTTPClient的get方法可以發(fā)起一個get請求

        from tornadohttpclient import TornadoHTTPClient
        
        # 實例化
        http = TornadoHTTPClient()
        
        # 發(fā)出get請求
        http.get("http://www.linuxzen.com")
        
        # 開始主事件循環(huán)
        http.start()
        
        

        POST

        TornadoHTTPClient的post方法可以發(fā)起一個post請求
        讀取響應(yīng)

        上面僅僅發(fā)出了請求, 但是我們無法讀取GET請求回來的數(shù)據(jù), 我們可以使用一個回調(diào)來讀取響應(yīng)

        from tornadohttpclient import TornadoHTTPClient
        
        http = TornadoHTTPClient()
        
        def callback(response):
         print response.body
         http.stop()
        
        http.get("http://www.linuxzen.com", callback = callback)
        http.start()
        
        

        通過callback關(guān)鍵字參數(shù)我們可以傳進一個回調(diào)函數(shù), 當(dāng)請求成功時會調(diào)用此函數(shù), 并給此函數(shù)傳遞一個與urllib2.urlopen返回一樣的reponse實例
        上傳文件

        upload方法可以上傳文件, 其接受一個url和文件的field和文件路徑, 還有其他post參數(shù)

        from tornadohttpclient import TornadoHTTPClient
        
        http = TornadoHTTPClient()
        def callback(response):
         print("打開圖片鏈接", end = " ")
         print(response.effective_url)
         http.stop()
        
        http.upload("http://paste.linuxzen.com", "img", "img_test.png",
         callback = callback)
        http.start()
        
        

        給callback傳遞參數(shù)

        有時候callback可能需要訪問局部變量, 可以通過 args和kwargs關(guān)鍵字參數(shù), 將callback的參數(shù)傳遞給get/post方法, args參數(shù)將會在response參數(shù)之后被傳遞, args參數(shù)類型應(yīng)當(dāng)是一個元組, kwargs參數(shù)類型應(yīng)當(dāng)是一個字典

        from tornadohttpclient import TornadoHTTPClient
        
        http = TornadoHTTPClient()
        
        def callback(response, times):
         print response.body
         print times
        
         if times == 9:
         http.stop()
        
        for i in range(10):
         http.get("http://www.linuxzen.com", callback = callback, args = (i, ))
        
        http.start()
        
        

        發(fā)送延遲請求

        有時我們需要延遲幾秒也發(fā)送請求或每隔幾秒就發(fā)送一個請求, get/post方法的delay關(guān)鍵字參數(shù)可以解決, delay參數(shù)接受一個單位為秒的數(shù)字, 并延遲delay秒后發(fā)起請求

        from tornadohttpclient import TornadoHTTPClient
        
        http = TornadoHTTPClient()
        
        def callback(response, times):
         print response.body
         if times < 9:
         # 延遲10秒發(fā)送此請求
         http.get("http://www.linuxzen.com", callback = callback, args = (times + 1, ), delay = 10)
         else:
         http.stop()
        
        http.get("http://www.linuxzen.com", callback = callback, args = (1, ))
        http.start()
        
        

        給請求傳遞參數(shù)

        TornadoHTTPClient 的 get/post方法的第二個參數(shù)params可以定義請求時傳遞的參數(shù)params的類型為字典或者((key, value), )類型的元組或列表,例如使用百度搜索TornadoHTTPClient

        from tornadohttpclient import TornadoHTTPClient
        
        http = TornadoHTTPClient()
        
        def callback(response):
         print response.body
         http.stop()
        
        http.get("http://www.baidu.com/s", (("wd", "tornado"),), callback = callback)
        http.start()
        
        

        以上也使用與POST方法, 比如登錄網(wǎng)站

        from tornadohttpclient import TornadoHTTPClient
        
        http = TornadoHTTPClient()
        
        def callback(response):
         print response.body
         http.stop()
        
        http.post("http://ip.or.domain/login", (("username", "cold"), ("password", "pwd")), callback = callback)
        
        http.start()
        
        

        指定HTTP頭

        TornadoHTTPClient 的get/post方法的 headers關(guān)鍵字參數(shù)可以自定額外的HTTP頭信息, 參數(shù)類型為一個字典

        指定User-Agent頭

        from tornadohttpclient import TornadoHTTPClient
        
        http = TornadoHTTPClient()
        
        def callback(response):
         print response.body
         http.stop()
        
        headers = dict((("User-Agent",
         "Mozilla/5.0 (X11; Linux x86_64)"
         " AppleWebKit/537.11 (KHTML, like Gecko)"
         " Chrome/23.0.1271.97 Safari/537.11"), ))
        
        http.get("http://www.linuxzen.com", headers=headers, callback = callback)
        
        

        使用代理

        TornadoHTTPClient 的set_proxy方法可以設(shè)置代理, 其接受兩個參數(shù), 分別是代理的 主機名/ip 代理的端口, unset_proxy可以取消代理

        from tornadohttpclient import TornadoHTTPClient
        
        http = TornadoHTTPClient()
        
        def callback(response):
         print response.body
         http.unset_proxy()
         http.stop()
        
        http.set_proxy("127.0.0.1", 8087)
        http.get("http://shell.appspot.com", callback = callback)
        http.start()
        
        

        Cookie

        TornadoHTTPClient會自動記錄和裝載Cookie, 可以通過 TornadoHTTPClient實例屬性 cookie 獲取Cookie

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        使用基于Python的Tornado框架的HTTP客戶端的教程

        使用基于Python的Tornado框架的HTTP客戶端的教程:由于tornado內(nèi)置的AsyncHTTPClient功能過于單一, 所以自己寫了一個基于Tornado的HTTP客戶端庫, 鑒于自己多處使用了這個庫, 所以從項目中提取出來, 寫成一個單獨庫 tornadohttpclient TornadoHTTPClient 是一個基于Tornado的高效的異步H
        推薦度:
        標(biāo)簽: 教程 http python
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲午夜精品一区二区麻豆| AAA日本高清在线播放免费观看| 18禁黄网站禁片免费观看不卡| 亚洲欧洲无码AV电影在线观看| 成人嫩草影院免费观看| 日韩伦理片电影在线免费观看| 亚洲中文字幕无码日韩| 久99久无码精品视频免费播放| 五月婷婷在线免费观看| 亚洲欧洲国产视频| 欧美在线看片A免费观看| 亚洲精品无码不卡在线播HE | 久久精品国产亚洲av成人| 国产在线观看无码免费视频| 亚洲人成网站观看在线播放| 一级特黄aaa大片免费看| 男女交性永久免费视频播放| 亚洲精品卡2卡3卡4卡5卡区| 久久久久免费看黄a级试看| 亚洲综合激情九月婷婷| 好吊妞998视频免费观看在线| 午夜亚洲乱码伦小说区69堂| 久久久久久亚洲精品不卡| 国产亚洲欧美日韩亚洲中文色| 亚洲国产精品人人做人人爱| 国产精品免费福利久久| 亚洲人成网站18禁止久久影院| 久久er国产精品免费观看2| 久久综合亚洲色HEZYO国产| 在线播放免费人成毛片乱码| 亚洲国产成人无码av在线播放| 四虎影永久在线高清免费| 久久亚洲国产最新网站| 亚洲精品在线免费观看| 在线观看亚洲电影| 亚洲AV无码久久精品色欲| 大地资源在线观看免费高清| 精品一区二区三区免费视频| 亚洲国产品综合人成综合网站| 免费欧洲美女牲交视频| 性xxxx视频免费播放直播|