爬虫入门随笔-2
网页解析


HTML语言
用URLopen抓取出来的是html语言编写出来的字符流
html语言:超文本编辑语言
·带着尖括号的tag
·网页的正文:图片,视频,音频的超级连接
一个URL对应着没有干扰的,纯文本的字节流
html以<html>和</html>标记开始和结束
·在开始和结束标记之间包含head和body两大部分
·在title描述中是对于整个网页的整体描述,对于网页的整体描述都比较重要
·在一个head中,只需要title,其他的东西爬虫不一定需要
·title是独一无二的标记,对于处理正则表达式比较容易
·在body中放有内容
·在内容中含有的标记(大小写等)也可以去掉
尖括号中表示标记,标记都是成对出现的
所有的标记都不是内容,都可以不要,需要网页解析来实现
标记可以提示我们需要选取那些内容
网页解析方法
·基于html文档格式的,用于从每个html文档中抽取相关信息
·对于html文档,有两种看待方式:
-将文档看作字符流
·正则表达式
-将文档看作树结构
·基于DOM
在字符流中,使用正则表达式做一个过滤器,只过滤特定格式的信息
正则表达式是一种规则,有特定格式
看作字符流,从左往右依次读取文档
html文档还可以看作是一个树
·有一个根结点,是<html>
·有两个分支,一个是body,一个是head
·看作是一个DOM树,从根结点开始访问,访问head的时候就不需要访问body分支
正则表达式
——RE(规则表达式)
是对字符串操作的一种逻辑公示
事先定义好的特定字符,特定字符的组合,组成一个“规则字符串”,用来表达对字符串的过滤逻辑
是由字符和元字符组成的字符串
正则表达式文本把正则表达式对象中匹配的对象留下,把不匹配的对象过滤
正则表达式引擎在每个语言中都含有
python中有自带的模块来提供正则表达式引擎
我们要做的:
·根据需要,自己写一个正则表达式规则
·用规则对字符串进行过滤,然后得到结果
正则表达式是一个过滤的规则

Java脚本时候正则表达式的,来确定代码是符合要求的
各种开发环境和操作系统均支持正则表达式
python的re模块
内置模块,直接import re
参考:菜鸟教程的re教程
步骤:
—re.compile()方法,构造正则表达式
·将正则表达式编译为正则表达式对象
·参数:正则表达式
·返回:正则表达式对象
—使用正则表达式匹配
·正则表达式对象.match()
·正则表达式对象.search()
例:
import re
r2=re.compile(‘World$’,re.l) //re.l表示不区分大小写,可以不写,$表示以什么结尾,是一个运算符
If r2.search(‘helloworld\n’):
print(“search succeeds”)
else
print(“~”)
r2表示不区分大小写,以word结尾的规则
用r2的规则进行search操作,对文档进行筛选
正则表达式语法:
-^匹配字符串开始的位置
-$匹配字符串结束的位置
-除了换行以外的任意字符
【0-9】匹配单个数字。 //这是一个数字,可以是0-9中的任意一个 //Java脚本的写法
-+匹配一个或多个
·【0-9】+匹配多个数字

浙公网安备 33010602011771号