电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))

瀏覽:2日期:2022-06-26 13:17:54

urllib是Python3中內(nèi)置的HTTP請求庫,不需要單獨安裝,官方文檔鏈接如下:https://docs.python.org/3/library/urllib.html從官方文檔可以看出,urllib包含4個模塊,如圖所示。

python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))

這4個模塊的功能描述如下:

request:最基本的HTTP請求模塊,可以用來發(fā)送HTTP請求,并接收服務(wù)端的響應(yīng)數(shù)據(jù)。這個過程就像在瀏覽器地址欄輸入URL,然后按Enter鍵一樣。 error:異常處理模塊,如果出現(xiàn)請求錯誤,我們可以捕獲這些異常,然后根據(jù)實際情況,或者進行重試,或者直接忽略,或進行其他操作。 parse:工具模塊,提供了很多處理URL的API,如拆分、解析、合并等。 robotparser:主要用來識別網(wǎng)站的robots.txt文件,然后判斷哪些網(wǎng)站可以抓取,哪些網(wǎng)站不可以抓取。

本文主要介紹如何通過urllib發(fā)送HTTP GET請求和HTTP POST請求,并獲取相應(yīng)數(shù)據(jù)。

1. 用urlopen函數(shù)發(fā)送HTTP GET請求

urllib最基本的一個功能就是向服務(wù)端發(fā)送HTTP請求,然后接收服務(wù)端返回的響應(yīng)數(shù)據(jù)。這個功能只需要通過urlopen函數(shù)就可以搞定。例如,下面的代碼向百度發(fā)送HTTP GET請求,然后輸出服務(wù)端的響應(yīng)結(jié)果。

import urllib.request response=urllib.request.urlopen(’https://baidu.com’) # 將服務(wù)端的響應(yīng)數(shù)據(jù)用utf-8解碼 print(response.read().decode(’utf-8’))

運行結(jié)果如圖 所示。

python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))

我們可以看到,使用urllib與服務(wù)端交互是非常容易的,除了import語句外,真正與業(yè)務(wù)有關(guān)的代碼只有2行,就完成了整個與服務(wù)端交互的過程。其實這個過程已經(jīng)完成了爬蟲的第一步,就是從服務(wù)端獲取HTML代碼,然后就可以利用各種分析庫對HTML代碼進行解析,提取出我們感興趣的URL、文本、圖像等。其實urlopen函數(shù)返回的是一個對象,而read是這個對象的一個方法,可以利用type方法輸出這個對象的類型,當(dāng)我們知道了對象類型后,就可以很容易知道這個對象中有哪些API,然后調(diào)用它們。

import urllib.request response=urllib.request.urlopen(’https://baidu.com’) print(type(response))

這段代碼會輸出如下的結(jié)果:

<class ’http.client.HTTPResponse’>

現(xiàn)在我們了解到,urlopen函數(shù)返回的是HTTPResponse類型的對象,主要包含read、getheader、getheaders等方法,以及msg、version、status、debuglevel、closed等屬性。下面是一個實際的案例,用來演示了HTTPResponse對象中主要的方法和屬性的用法。

import urllib.request # 向京東商城發(fā)送HTTP GET請求,urlopen函數(shù)即可以使用http,也可以使用https response=urllib.request.urlopen(’https://www.jd.com’) # 輸出urlopen函數(shù)返回值的數(shù)據(jù)類型 print(’response的類型:’,type(response)) # 輸出響應(yīng)狀態(tài)碼、響應(yīng)消息和HTTP版本 print(’status:’,response.status,’ msg:’,response.msg,’ version:’, response.version) # 輸出所有的響應(yīng)頭信息 print(’headers:’,response.getheaders()) # 輸出名為Content-Type的響應(yīng)頭信息 print(’headers.Content-Type’,response.getheader(’Content-Type’)) # 輸出京東商城首頁所有的HTML代碼(經(jīng)過utf-8解碼) print(response.read().decode(’utf-8’))

運行結(jié)果如圖所示。

python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))

2. 用urlopen函數(shù)發(fā)送HTTP POST請求

urlopen函數(shù)默認(rèn)情況下發(fā)送的是HTTP GET請求,如果要發(fā)送HTTP POST請求,需要使用data命名參數(shù),該參數(shù)是bytes類型,需要用bytes類將字符串形式的數(shù)據(jù)轉(zhuǎn)換為bytes類型。下面的例子

下面的例子向http://httpbin.org/post發(fā)送HTTP POST請求,并輸出返回結(jié)果。

import urllib.request # 將表單數(shù)據(jù)轉(zhuǎn)換為bytes類型,用utf-8編碼 data=bytes(urllib.parse.urlencode({’name’:’Bill’,’age’:30}),encoding=’utf-8’) # 提交HTTP POST請求 response=urllib.request.urlopen(’http://httpbin.org/post’,data=data) # 輸出響應(yīng)數(shù)據(jù) print(response.read().decode(’utf-8’))

這段代碼中一開始提供了一個字典形式的表單數(shù)據(jù),然后使用urlencode方法將字典類型的表單轉(zhuǎn)換為字符串形式的表單,接下來將字符串形式的表單按utf-8編碼轉(zhuǎn)換為bytes類型,這就是要傳給urlopen函數(shù)的data命名參數(shù)的值,要注意,一旦指定了data命名參數(shù),urlopen函數(shù)就會向服務(wù)端提交HTTP POST請求,這里并不需要顯式指定要提交的是POST請求。

本例將HTTP POST請求提交給了http://httpbin.org/post,這是一個用于測試HTTP POST請求的網(wǎng)址,如果請求成功,服務(wù)端會將HTTP POST請求信息原封不動地返回給客戶端。運行結(jié)果如圖所示。

python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))

以上就是python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))的詳細(xì)內(nèi)容,更多關(guān)于python 用urllib與服務(wù)端交互的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 酸度计_PH计_特斯拉计-西安云仪| 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 南京兰江泵业有限公司-水解酸化池潜水搅拌机-絮凝反应池搅拌机-好氧区潜水推进器 | 北京燃气公司 用户服务中心| 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 震动筛选机|震动分筛机|筛粉机|振筛机|振荡筛-振动筛分设备专业生产厂家高服机械 | 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 北京亦庄厂房出租_经开区产业园招商信息平台| 国际线缆连接网 - 连接器_线缆线束加工行业门户网站 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | 山东钢格板|栅格板生产厂家供应商-日照森亿钢格板有限公司 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 智能监控-安防监控-监控系统安装-弱电工程公司_成都万全电子 | 天津仓储物流-天津电商云仓-天津云仓一件代发-博程云仓官网 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 最新范文网_实用的精品范文美文网| 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 东莞海恒试验仪器设备有限公司 | 不锈钢钢格栅板_热浸锌钢格板_镀锌钢格栅板_钢格栅盖板-格美瑞 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 水轮机密封网 | 水轮机密封产品研发生产厂家 | 潜水搅拌机-双曲面搅拌机-潜水推进器|奥伯尔环保 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 防爆电机-高压防爆电机-ybx4电动机厂家-河南省南洋防爆电机有限公司 | 清管器,管道清管器,聚氨酯发泡球,清管球 - 承德嘉拓设备 | Duoguan 夺冠集团 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 |