from bs4 import BeautifulSoup
soup=BeautifulSoup(‘
data
’,解析器)解析器常用的,包括:
‘html,parser’:html解析器
‘lxml’:lxml解析器
BS对内容上进行遍历:
.content 子节点的列表
.children 子节点的迭代类型
.descendants 子孙节点的迭代类型
.parent 节点的父亲标签
.parents 节点的先辈标签,用于循环遍历先辈节点
.next_sibling 返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling 返回按照HTML文本顺序的上一个平行节点标签
.next_siblings 返回按照HTML文本顺序的后续所有平行节点标签
.previous_siblings 返回按照HTML文本顺序的前序所有平行节点标签
平行遍历:for siblings in soup.a.next_siblings:
prettify()方法:让输入的html内容以更加友好的方式表现出来。
提取信息的一般方法:
法一:完整解析信息标记的行程,再提取关键信息,主要有XML,JSON,YAML等。
法二:无视标记类型,直接搜索关键信息。对文本信息查找函数。
法三:两者融合。需要标记解析器及文本查找函数。
例子:提取HTML所有的url链接。
(1)搜到所有的标签
(2)解析标签
for link in soup.find_all('a'):
print(link.get('href'))
find_all(name,attrs,recursive,string,**kwargs)
name 参数可以查找所有名字为 name 的tag,除此之外的字符串对象会被自动忽略掉。
如果一个指定名字的参数不是内置的参数名,在搜索的时候会把该参数当作指定名字tag的属性来搜索。如果包含一个名字为 id 的参数,Beautiful Soup会搜索每个tag的”id”属性.
调用tag的 find_all() 方法时,Beautiful Soup会检索当前tag的所有子孙节点,如果只想搜索tag的直接子节点,可以使用参数 recursive=False