国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python中urllib模塊用法實(shí)例詳解

2019-11-25 18:05:24
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了python中urllib模塊用法。分享給大家供大家參考。具體分析如下:

一、問(wèn)題:

近期公司項(xiàng)目的需求是根據(jù)客戶(hù)提供的api,我們定時(shí)去獲取數(shù)據(jù), 之前的方案是用php收集任務(wù)存入到redis隊(duì)列,然后在linux下做一個(gè)常駐進(jìn)程跑某一個(gè)php文件, 該php文件就一個(gè)無(wú)限循環(huán),判斷redis隊(duì)列,有就執(zhí)行,沒(méi)有就break.

二、解決方法:

最近剛好學(xué)了一下python, python的urllib模塊或許比php的curl更快,而且簡(jiǎn)單. 貼一下代碼

復(fù)制代碼 代碼如下:
#_*_ coding:utf-8 _*_
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import os
import json
from urllib import urlopen
doc = urlopen("http://xxxx?webid=1&tid=901&cateid=101").read()
doc = json.loads(doc)
print doc
print doc.keys()
print doc["msg"]
print doc['data']
print doc['ret']

發(fā)現(xiàn)第一次訪(fǎng)問(wèn)所需要的時(shí)間為[Finished in 3.0s]
而第二次訪(fǎng)問(wèn)的時(shí)間為[Finished in 0.2s]
可見(jiàn)python的urllib模塊是加有緩存的
urllib/2用法典型的例子
復(fù)制代碼 代碼如下:
    import urllib2
    import cookielib
    import urllib

    class Hi_login:
        def __init__(self):
            cookie = cookielib.CookieJar()
            self.cookie = urllib2.HTTPCookieProcessor(cookie) ##### 生成cookie ###

        def login(self,user,pwd):
            url='http://passport.baidu.com/?login'
            postdata=urllib.urlencode({
          'mem_pass':'on',
       
          'password':pwd
           'Submit':'',
          'tpl':'sp',
          'tp_reg':'sp',
          'u' :'http://hi.baidu.com',
          'username':user})
            ### proxy_support = urllib2.ProxyHandler({"http":"http://ahad-haam:3128"}) 然后加入opener方法里####
            opener = urllib2.build_opener(self.cookie) ### 使用cookie ###
            headers = { ####### dict結(jié)構(gòu),可以加入x-forward-for甚至refer等 #######
           'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
            urllib2.install_opener(opener)
            request = urllib2.Request(url,urllib.urlencode(postdata),headers = headers)
            urllib2.urlopen(request)
    if __name__=='__main__':
       pwd='123456'
       user='xiaofu'
       test=Hi_login()
       test.login(user,pwd)


假如訪(fǎng)問(wèn)需要認(rèn)證的頁(yè)面比如nagios監(jiān)控頁(yè)面等,
復(fù)制代碼 代碼如下:
    import urllib2
    password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
    url = "http://202.1.x.y/nagios"
    password_mgr.add_password(None, url, user='abc',passwd='xxxxxx')
    handler = urllib2.HTTPBasicAuthHandler(password_mgr)
    opener = urllib2.build_opener(handler)
    urllib2.install_opener(opener)
    f=urllib2.urlopen(url)
    print f.code

返回結(jié)果200,否則就是401認(rèn)證錯(cuò)誤

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 海门市| 秭归县| 镇原县| 麻栗坡县| 五大连池市| 浙江省| 尼玛县| 泗洪县| 遂宁市| 太仓市| 浑源县| 怀仁县| 兴海县| 台江县| 车致| 莱芜市| 扎兰屯市| 定日县| 将乐县| 奇台县| 萝北县| 伊宁县| 鄢陵县| 安国市| 莱西市| 略阳县| 吴川市| 灵台县| 云龙县| 安泽县| 北宁市| 永仁县| 宿迁市| 松溪县| 响水县| 塔城市| 庄河市| 桐城市| 青铜峡市| 百色市| 西吉县|