第二章 Web页面及相关技术
常用的pattern
import re
ret = re.findall('ca?t',"ct and mouse")
print(ret)
ret = re.findall('ca+t',"caaat and mouse")
print(ret)
ret=re.findall('ca{1,5}t',"caaaat catd mouse")
print(ret)
ret=re.findall('\d','a1b22c666')
print(ret)
s='''<li><a href="https://www.baidu.com/s?ie=UTF-8&wd=csdn></a><li>'''
re.findall("http://[a-zA-Z0-9/\.\-*]",s)
print(ret)
****************************************************
第三章 Web应用架构与协议
3.1 常用的Web服务器软件
3.1.1 流行的Web服务器软件
常见的Web服务器有Apache、IIS(Internet Information Server)、Nginx、Lighttpd、Zeus、Resin、Tomact等等
3.1.2 在Python中配置Web服务器
(1)通过执行cmd,进入Windows控制台
(2)切换到Web服务器的虚拟根目录,也就是存放网页的根目录位置
(3)执行命令:python-m http.server 端口号
---------------------------------------------------------------------------------------------------------------------------------
3.2 Web服务器的应用架构
3.2.1 典型的应用架构
1.Client/Server
2.Client/Server.Database
3.Web服务集群
4.虚拟主机
3.2.2 Web页面类型
从Web网页的组成结构看,一个标准的网页一般包含4个部分,即内容、结构、表现效果和行为。
内容是网页中直接传达给阅读者的信息,包括文本、数据、图片、音/视频等;
结构是指Web页面的布局,对内容进行分类使之更具有逻辑性,符合用户的浏览习惯;
表现效果指对已经结构化的内容进行和死绝感官上的渲染,例如字体、颜色等;
行为则是指网页内容的生成方式
3.2.3 页面文件的组织方式
对于爬虫来说,在获取al.html页面之后要寻找其中的href超链接。对于绝对链接,只需要把“href=”后面的字符串提取出来即可;而对于相对连接,没有完整的http,单纯从这个href所指定的链接无法知道其真正的结果,去要进行超链接的转换。
<base href="http://127.0.0.1:8080/aaa/"/>
那么就意味着该文件中所有的超链接都以根目录下的aaa子目录为当前目录。因此作为爬虫程序,也应当检查HTML;文档中是否存在<base>标签。
---------------------------------------------------------------------------------------------------------------------------------
3.3 Robots协议
3.3.1 Robots协议的来历
3.3.2 Robots协议的规范与实现
在浏览器中打开网页后,在网站首页的地址后面添加“/robots.txt”,如果网站设置了访问许可,按回车就可以看到网站的Robots协议,即robots.txt文件的内容。
robots.txt文件的具体约定如下:
(1)文件中包含一个或多个记录,每个记录有一个或多个空白行隔开。每个记录由多行造成,每行的形式为:
<field>:<optionalspace><balue><optionalspace>
指出了每个字段及其对应的值。字段名由User-Agent、Disallow、Allow,每个记录就是有这些关键词来规定爬虫的访问许可。
在一个记录中可以有多个User-Agent、多个Disallow或Allow。
(2)User-Agent:User-Agent的使用方式是User-Agent[agent_name],其中agent_name有两种典型形式,即*和具体的爬虫标识。例如:
User-Agent:* 表示所定义的访问许可适用于所有爬虫
User-Agent:Baiduspider 表示所定义的访问许可适用于标识为Baiduspider的爬虫
例如百度的爬虫可以在"http://baidu.com/search/spider.htm"查到。
(3)Disallow或Allow:Disallow和Allow的使用方法相同,只是决定了不同的访问许可。这种访问许可是针对目录、文件或页面而言,即允许或不允许访问。Robots协议的默认规则是,一个目录如果没有显式声明为Disallow,他就是允许访问的。
Robots协议通过Allow与Disallow的搭配使用,,对爬虫的抓取实行限制或方形。如果网站大部分是不允许爬虫抓取的,则可以像淘宝一样,定义允许访问的模式,其他的则不允许。反之,如果大部分是允许抓取的,则可以参考百度的做法,显式定义不允许访问的模式。
---------------------------------------------------------------------------------------------------------------------------------
3.4 超文本传输协议(Hyper Text Transfer Protocol,HTTP)协议
超文本传输协议是互联网上使用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。HTTP是基于TCP/IP协议的应用层协议,采用请求/相应模型。通过使用Web浏览器/网络爬虫或其他工具,客户端向服务器上的指定端口(默认端口为80)发送一个HTTP请求,服务器根据接收到的请求向客户端发送响应信息。
3.4.1 HTTP版本的技术特性
1.HTTP 0.9
HTTP0.9发布于1991年,只允许客户端发送GET这一种请求,不支持请求头,因此客户端无法向服务器端传递太多消息。
2.HTTP 1.0
HTTP1.0于1996年发布,在HTTP0.9的基础上增加了许多新内容。
3.HTTP 1.1
HTTP1.1发布于1997年,是目前使用最广泛的HTTP协议版本,与之前的版本相比,改进主要集中在提高性能/安全性以及数据类型处理等方面。
4.HTTP 2
HTTP2于2015年发布,在实现HTTP1.1完全于一兼容的基础上,他在性能上实现了大幅提升,但尚未真正应用。
3.4.2 HTTP报文
分为请求报文(request Massage)和响应报文(Respone Massage)
1.请求报文
HTTP规定的请求报文由起始行、头部、以及实体组成
具体格式如下:
---------------------------------------------------------------------------------------
<method><request-URL><version> #起始行(请求行)
<headers> #头部(请求头)
#请求头结束
<entity-body> #实体(请求体)
---------------------------------------------------------------------------------------
注意:在使用GET和HEAD方法请求网页时没有请求体。其请求参数表现在请求航,附加在URL后面,使用“?”来表示URL的结尾和请求参数的开始。
2.响应报文
与请求报文类似,HTTP响应报文由起始行、头部以及实体构成。HTTP1.0和HTTP1.1规定的响应报文格式如下:
---------------------------------------------------------------------------------------
<version><status><reason-phrase>
<headers>
<entity-body>
---------------------------------------------------------------------------------------
3.4.3 HTTP头部
3.4.4 HTTP状态码
HTTP状态码
1.成功状态码:
200(OK)
202(Accepted)
2.重定向状态码:
301(MovedPermanely)
304
3.客户端错误状态码:
400
401
403
404
4.服务器错误状态码
500
503
3.4.5 HTTPS(超文本传输安全协议)