BeautifulSoup实例
1 .string与.strings
- .string:如果一个标记里没有标记了,或者一个标记里只有唯一的一个标记,可以返回标记里的内容;如果tag包含多个子节点,则返回None。
- .strings 主要应用与tag中包含多个字符串,进行循环遍历。返回类型为生成器
self.log.info(soup.p.string)
for subH1 in soup3.h1.strings:
self.log.info(subH1)
2 搜索文档树 find_alll()
-
find_all(name,attrs,recursive,text,**kwargs)
name 可以是字符串、正则表达式、列表、True、函数
字符串:查找所有<p>标记soup.find_all(‘p’)
正则表达式:查找所有以b开头的标记
soup.find_all(re.compile("^b")
列表:找到所有的<a> 、<b>标记
soup.find_all([“a”,“b”])
True:匹配所有的Tag
soup.find_all(True)
函数:查找class\id属性
def hasClass_Id(tag): return tag.has_attr('class') and tag.has_attr('id') soup.find_all(hasClass_Id)
**kwargs参数查找
soup.find_all(id=‘link2’)
soup.find_all(href=re.compile(“img”)
soup.find_all(“a”,attrs={“id”:“item_number”)
soup.find_all(“a”,class_=“item_number”)
soup.find_all(text=“item_number”)3 其它函数与find_all相似
函数 功能 find() 与find_all使用相同,find_all返回满足要求的列表,find只返回find_all返回列表中的第一个。 find_parent()、find_parents() 搜索当前节点的父辈节点。 find_next_siblings()、find_next_sibling() 搜索当前节点的后面的兄弟节点。 ind_preivous_siblings()、find_previous_sibling() 搜索当前节点的前面的兄弟节点。 ind_all_next()、find_next() 对当前tag之后的tag和字符串进行迭代 ind_all_previous()、find_previous() 对当前tag之前的tag和字符串进行迭代