(7)操作系统的服务
这种类型的模板被应用于这个软件在各种不同的系统中被使用,被用来进行访问其他软件的库,提供一种可移植的接口,处理文件路径,创建一种新的进程并控制它的输入与输出还有返回,还可以对注册表进行操作。
举一些例子:mmap,os,signal,time,winreg等。
(8)线程和并行
这种模板可以方便用对对于加载多个任务,进行通信,对于数据的共享,还可以执行各种的同步操作提供了许多便利。
例如:queue,threading。等
(9)网络编程和套接字
这类模板通过封装类简化应用程序的网络异步处理,对各种对象进行包装从而可以实现例如数据加密和终端认证等服务,也可以简化一些协议。
例如:ssl,select。等
(10)互联网应用程序编程
这类模板被用来处理互联网中的相关协议与接口,实现网络文件与本地文件进行交互。我们在做我们的爬虫就使用了其中比较常用的一种模块,urllib。这个模块包中提供了一些高级的接口用来实现本地文件和http server,ftp serber进行交互的client。
例如:http包,urllib包等。
(11)Web编程
这类模板被用来实现一些脚本,处理用户的输入或者生成一些动态的内容。或者向用户直接提供了一种独立的平台来使用里面的工具函数对文档进行操作。
例如:cgi,webbrower等
(12)网络数据的处理和编码
这类模板向用户提供各种编码方式,从而可以实现二进制数据和文本之间的编码和解码过程,也提供了一些低级的端口从而让二进制码和ASCII码进行转化,也向用户提供了大量的函数和对象来对网站进行解析和维护。文献综述
例如:email,csv,base64等。
2。3。1 urillb2模板详解
因为本课题的爬虫程序主要是运用的urillb2模板进行编写的,这里对这个模板进行一个详细的解释[1]。
(1)Proxy 的设置
urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。如果想在程序中明确控制 Proxy 而不受环境变量的影响,可以使用下面的方式:
import urllib2
enable_proxy = True
proxy_handler=urllib2。ProxyHandler({"http":'http://some-proxy。com:8080'})
null_proxy_handler = urllib2。ProxyHandler({})
if enable_proxy:
opener = urllib2。build_opener(proxy_handler)
else:
opener=urllib2。build_opener(null_proxy_handler) urllib2。install_opener(opener)[2]
这里要注意的一个细节,使用 urllib2。install_opener() 会设置 urllib2 的全局 opener 。这样后面的使用会很方便,但不能做更细粒度的控制,比如想在程序中使用两个不同的 Proxy 设置等。比较好的做法是不使用 install_opener 去更改全局的设置,而只是直接调用 opener 的 open 方法代替全局的 urlopen 方法。
(2)Timeout 设置
在老版 Python 中,urllib2 的 API 并没有暴露 Timeout 的设置,要设置 Timeout 值,只能更改 Socket 的全局 Timeout 值。
(3)使用 HTTP 的 PUT 和 DELETE 方法
urllib2 只支持 HTTP 的 GET 和 POST 方法,如果要使用 HTTP PUT 和 DELETE ,只能使用比较低层的 httplib 库。虽然如此,我们还是能通过下面的方式,使 urllib2 能够发出 PUT 或 DELETE的请求[3]:来自~优尔、论文|网www.youerw.com +QQ752018766-
import urllib2
Request = urllib2。Request(uri, data=data)
request。get_method = ambda: 'PUT' # or 'DELETE'
response = urllib2。urlopen(request)