pyhont---信息的爬取与提取---bs4,BeautifulSoup,re库
Posted bear_ge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyhont---信息的爬取与提取---bs4,BeautifulSoup,re库相关的知识,希望对你有一定的参考价值。
pyhont---信息的爬取与提取---bs4,BeautifulSoup,re库 用于对获取到的页面文本进行提取
BeautifulSoup库的理解:BeautifulSoup库是解析、遍历、维护"标签树"的功能库。
BeautifulSoup类的基本元素
Tag:标签,最基本的信息组织单元,分别使用<></>标明开头和结尾 多个同类标签只访问第一个标签
Name:标签的名字,<p>...</p>的名字是p,格式:<tag>.name
Attributes :标签的属性,字典形式的组织,格式:<tag>.attrs
NavigableString:标签内非属性字符串,格式:<tag>.string
Comment:标签内字符串的注释部分,一种特殊的Comment类型 用.string注释内容也会显示
///////
基于bs4库的遍历html方法:
下行遍历,上行遍历,平行遍历
标签树的下行遍历属性:
.contents 子结点的列表,将<tag>的所有儿子节点存入列表
.children 子节点的迭代类型,与contents类似,用于循环遍历儿子节点 //只能for,in中
.descendants 子孙节点的迭代类型,包含所有子孙结点,用于循环遍历
标签树的上行遍历的属性:
.parent 节点的父亲标签
.parents 节点先辈的迭代类型,用于循环遍历先辈节点
标签的平行遍历属性:(平行遍历发生在同一个父节点下的各节点间)
.next_sibling 返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling 回按照HTML文本顺序的上一个平行标签
.next_siblings 迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings 迭代类型,返回按照HTML文本顺序的前续所有平行节点标签
////////
////////
如何将HTML友好的显示:
bs4库的prettify()方法:
该函数可在HTML每个标签后加‘\n‘
该函数也可以应用于tag中
////////
////////
信息标记一般类型种类:xml,json,yaml
信息提取的一般方法:
1、完整解析信息的标记形式,在提取关键信息
2、无视标记形式,直接搜索信息 对信息的文本查找函数即可
融合方法:结合形式解析与搜索方法,提取关键字 ...需要标记解析器及文本查找函数
///////
///////
beautifulsoup库对象的查找函数:
find_all(name,attrs,recursive,string,**kwargs) 返回一个列表类型,存储查找的结果
参数:name:对标签名称的检索字符串,可以使用列表查找多个标签,find_all(true)所有标签
attrs:对标签属性值的检索字符串,可标注属性检索 例如find_all(‘a‘,‘href‘)
recursive:是否对子孙所有节点搜索,默认值为true,false则值查找当前节点儿子的信息
string:<></>中字符串区域的检索字符串
<tag>(..)等价于<tag>.find_all(...)
soup(..)等价于soup.find_all(..)
拓展方法(参数均与find_all()相同)
find() 搜索且返回一个结果,字符串类型
find_parents() 在先辈节点中搜索,返回一个列表类型
find_parent() 在先辈节点中返回一个结果,字符串类型
find_next_siblings() 在后续平行节点搜索,返回列表类型
find_next_sibling()
find_previous_siblings()
find_previous_sibling() 在前序平行节点中返回一个结果,字符串类型
/////////
正则表达式:通用的字符串表达框架,判断某字符串的特征归属,用来简洁表达一组字符串的方式
一般用于表达文本类型特征
同时查找或替换一组字符串
匹配字符串的全部或部分(主要)
正则表达式的使用:
编译:将符合正则表达式语法的字符串转换正则表达式特征
正则表达式的语法:由字符与操作符组成
正则表达式类型
raw string(原生字符串类型:不包含转义字符的字符串) 表示为 r‘text‘
string 类型
Re库 主要用于字符串匹配
Re库的主要功能函数
re.search(pattern,string,flag=0)在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match() 在一个字符串的开始位置起匹配正则表达式,返回match对象 注意match为空
re.findall()搜索字符串,一列表类型返回全部能匹配的子串
re.split()将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub()在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
re.compile(pattern,flags) 将正则表达式的字符串形式编译成正则表达式对象
match对象
属性
string 待匹配文本
re 匹配时使用的pattern对象(正则表达式)
pos 正则表达式搜索文本的开始位置
endpos 正则表达式搜索文本的结束为止
方法
.group(0) 获得匹配后的字符串
.start() 匹配字符串在原始字符串的开始位置
.end() 匹配字符串在原始字符串的结束位置
.span() 返回(.start(),.end())元组类型
以上是关于pyhont---信息的爬取与提取---bs4,BeautifulSoup,re库的主要内容,如果未能解决你的问题,请参考以下文章