爬虫入门随笔-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】+匹配多个数字

posted @ 2021-11-02 20:58  C语言使我快乐  阅读(63)  评论(0)    收藏  举报