章节知识路线
- 9.1 简介
- 9.2 Python Web客户端工具
- 9.3 Web客户端
- 9.4 Web(HTTP)服务器
- 9.5 相关模块
章节主张:Web 客户端和服务器章搭的是整个 Web 栈的地基:URL、HTTP、页面解析、客户端抓取与服务端响应在这里第一次串起来。
中文释读:如果不先理解协议和请求流,后面框架再高级也容易变成黑箱。本章让你看到从抓取网页到提供网页,其实是在同一条接口链上不同位置工作。
第 9 章 Web 客户端和服务器 307 9.1 简介 由于 Web 应用程序的涵盖面非常广,因此本书新版中对这一部分进行了重组,针对 Web 开发划分了多个章节,每个章节介绍一个主题,让读者可以关注 Web 开发中特定的几个方面。
怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。
提醒:最常见的问题是只记住 9.1 简介 的 API 或步骤,却没搞清它的上下游依赖与边界条件。
第 9 章 Web 客户端和服务器 307 9.1 简介 由于 Web 应用程序的涵盖面非常广,因此本书新版中对这一部分进行了重组,针对 Web 开发划分了多个章节,每个章节介绍一个主题,让读者可以关注 Web 开发中特定的几个方面。 在深入其中之前,本章将作为 Web 开发的介绍章节,再次重点讨论客户端/服务器架构, 但这次是从 Web 的角度来了解。 本章将为后续章节打下坚实的基础。
310 第 2 部分 Web 开发 含有备份数据,作为冗余系统的一部分在高需求情形下(含有大量客户时)提供数据。
怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。
提醒:最常见的问题是只记住 9.2 Python Web客户端工具 的 API 或步骤,却没搞清它的上下游依赖与边界条件。
310 第 2 部分 Web 开发 含有备份数据,作为冗余系统的一部分在高需求情形下(含有大量客户时)提供数据。 小 公司的 Web 站点或许不需要很多硬件和网络设备,在他们的 ISP 那里也许只有一台或若干 台托管服务器。 不管是哪种情况,大部分 ISP 的托管服务器都位于骨干网上。
322 第 2 部分 Web 开发 9.3 Web 客户端 Web 浏览器是基本的 Web 客户端。
怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。
提醒:最常见的问题是只记住 9.3 Web客户端 的 API 或步骤,却没搞清它的上下游依赖与边界条件。
322 第 2 部分 Web 开发 9.3 Web 客户端 Web 浏览器是基本的 Web 客户端。 它主要用来在 Web 上查询或者下载文档。 但还可以 创建一些具有其他功能的 Web 客户端。
336 第 2 部分 Web 开发 第 56~60 行 这是所有部分中最短的,这里仅仅是确认已经返回了主页面(第 59 行),并继续跟踪 “Log out”链接。
怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。
提醒:最常见的问题是只记住 9.4 Web(HTTP)服务器 的 API 或步骤,却没搞清它的上下游依赖与边界条件。
336 第 2 部分 Web 开发 第 56~60 行 这是所有部分中最短的,这里仅仅是确认已经返回了主页面(第 59 行),并继续跟踪 “Log out”链接。 第 62~68 行 最后一部分确认位于注销页面且没有登录。 这是通过检查页面上是否有“Log in”链接 来完成的(第 66~67 行)。
第 9 章 Web 客户端和服务器 339 功能更强大,代码更少:一个简单的 CGI Web 服务器 前面那个例子太脆弱了,BaseHTTPServer 非常基础,它不能处理 CGI 请求。
怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。
提醒:最常见的问题是只记住 9.5 相关模块 的 API 或步骤,却没搞清它的上下游依赖与边界条件。
第 9 章 Web 客户端和服务器 339 功能更强大,代码更少:一个简单的 CGI Web 服务器 前面那个例子太脆弱了,BaseHTTPServer 非常基础,它不能处理 CGI 请求。 在更高层 次上,使用 SimpleHTTPServer,其提供了 do_HEAD()和 do_GET()方法,所以无须自行创建 这两个方法,就像在 BaseHTTPServer 中做的那样。 标准库中提供的最高层次(姑且相信是最高层次)服务器是 CGIHTTPServer。
第 9 章 Web 客户端和服务器 341 (续表) 模块/包 描 述 第三方开发包(非标准库) HTMLgen 协助 CGI 把 Python 对象转换成可用的 HTML(http://starship.python.net/crew/friedrich/HTMLgen/ html/main.html) BeautifulSoup HTML、XML 解析器及转换器 (http://crummy.com/software/BeautifulSoup) Mechanize 基于万维网的 Web 浏览包 (http://wwwsearch.sourceforge.net/mechanize/) ① Python 1.6 中新增。
怎么用:把这节内容转成自己的一个最小脚本、接口实验或系统边界测试,验证它在真实任务中的输入输出。
提醒:最常见的问题是只记住 9.6 练习 的 API 或步骤,却没搞清它的上下游依赖与边界条件。
第 9 章 Web 客户端和服务器 341 (续表) 模块/包 描 述 第三方开发包(非标准库) HTMLgen 协助 CGI 把 Python 对象转换成可用的 HTML(http://starship.python.net/crew/friedrich/HTMLgen/ html/main.html) BeautifulSoup HTML、XML 解析器及转换器 (http://crummy.com/software/BeautifulSoup) Mechanize 基于万维网的 Web 浏览包 (http://wwwsearch.sourceforge.net/mechanize/) ① Python 1.6 中新增。 ② Python 2.0 中新增。 ③ Python 2.2 中新增。
为什么做 Web 工作的人应该同时理解客户端和服务器?