Python核心编程:第20章 Web编程

本文介绍了Web应用的基础概念,包括客户端/服务器架构、HTTP协议及其无状态特性,并详细讲解了如何使用Python的urllib模块创建简单的Web客户端进行网页数据抓取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20.1.1 Web应用:客户端/服务器计算

Web应用遵循我们反复提到的客户端/服务器架构。这里,Web的客户端是浏览器,应用程序允许用户在万维网上查询文档.另外Web服务器端,进程运行在信息提供商的主机上。这些服务器等待客户和文档请求,进行相应的处理,返回相应的数据。

HTTP协议是TCP/IP协议的上层协议,这意味着HTTP协议依靠TCP/IP协议来进行低层的交流工作。它的职责不是路由或者传递消息,而是通过发送、接收HTTP消息来处理客户的请求。

HTTP协议属于无状态协议,它不跟踪从一个客户端到另一个客户端的请求消息,这点和我们现今使用的客户端/服务器端架构很像。服务器端持续运行,但是客户端的活动是按照这种结构独立进行的,一旦一个客户的请求完成后,活动将被中止。可以随时发送请的请求,但是他们会被处理成独立的服务请求。由于每个请求缺乏上下文背景,你可以注意到有些URL会有很长的变量和值作为请求的一部分,以便提供一些状态信息,另一个选线是‘cookie'保存在客户端的客户状态信息。

20.2 使用Python进行Web应用:创建一个简单的Web客户端

浏览器只是Web客户端中的一种。任何一个通过向服务器端发送请求来获得数据的应用程序被认为是“客户端”。

一个使用urllib模块下载或者访问Web上的信息的应用程序[使用urllib.urlopen()或者urllib.urlretrieve()]可以被认为是简单的Web客户端。

20.2.1统一资源定位符

简单的Web应用包括使用被称为URL(统一资源定位器)的Web地址。

20.2.2urparse模块

urlpasrse模块提供了操作符URL字符串的基本功能。这些功能包括urlparse().urlunparse()和urljoin()

urlparse.urlparse()将字符串拆分成如上所描述的一些主要部件,具体语法结构如下:

urlparse(urlstr,defProtSch=None,allowFrag=None)

urparse()将URL字符串解析成一个6元组(prot_sch、net_loc、path、params、query、frag)

urlunpase()的功能与urlpase()完全相反,它想拼合一个6元组

urljoin()将URL的基部件baseurl和newurl拼合成一个完整的URL

20.2.3 urllib模块

urllib模块提供了所有的功能,提供了一个高级的Web交流库,支持Web协议、HTTP协议、FTP协议和Gopher协议,同时也支持对本地文件的访问。urllib模块的特殊功能是利用上述协议下载数据(从因特网、局域网、主机上下载)

urllib模块提供了给定的URL地址下载数据的功能,同时也可以通过字符串的编码、解码来确保它们是有效URL字符串的一部分

1.urllib.urlopen()

打开一个给定的URL字符串与Web连接,并返回了文件类的对象。

2.urllib.urlretrieve()

urlretrieve(urlstr,localfile=None,downloadSta- tusHook=None)

除了向urlopen()这样从URL中读取内容,urlretrieve()可以方便的urlretrieve()可以方便的将urlstr定位到的整个HTML文件下载到你本地的硬盘中。

3.Urllib.quote()和urllib.quote-plus()

quote*()函数获取URL数据,并将其编码,从而适用于URL字符串中。

quote(urldata,safe='/')

逗号、下划线、句点、斜线和字母数 字这类符号是不需要转化的。其他则需要转换。另外,那些不被允许的字符前边会被加上百分号(%)同时转换成16进制。

quote_plus()与quote()很像,另外它还可以将空格编码成(+)号。

5.urllib.urlencode()

将字典建-值对编译成有效的CGI请求字符串,用quote_plus()对键和值字符串分别编码

 

看的有点累,换成廖雪峰的WEB开发看了

 

 

 

转载于:https://my.oschina.net/finndai/blog/812378

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值