BeautifulSoup基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BeautifulSoup基础相关的知识,希望对你有一定的参考价值。
MarkdownPad DocumentBeautifulSoup
findAll函数 nameList = bsObj.findAll("span", {"class":"green"}) for name in namelist: print(name.get_text()) #找到所有属性class="green"的span标签,通常在你准备打印、存储和操作数据时,应该最后才使 用 .get_text() 。一般情况下,你应该尽可能地保留 html 文档的标签结构。 findAll(tag, attributes, recursive, text, limit, keywords) find(tag, attributes, recursive, text, keywords) tag:可以传一个标签名称或者多个标签组成的列表 attributes:用字典封装一个标签的若干属性和对应的属性值 recursive:默认为True,递归查找子标签,设置为False则只查找一级标签 text:用标签的文本内容去匹配,而不是标签的属性 limit:对获取的项进行限制,find就是findall的limit=1 keyword:可以选择那些具有指定属性的标签(由于class在Python中是保留字,而在CSS中是属性名,所以不推荐用keyword) 例如: allText = bsObj.findAll(id="text")
BeautifulSoup中的对象
BeautifulSoup对象——bsobj
标签Tag对象——bsObj.div.h1
NavigableString对象——标签里的文字
Comment对象——查找HTML文档的注释标签
bsObj.div.findAll("img") 会找出文档中第一个 div 标签,然后获取这个 div 后 代里所有的 img 标签列表。
for child in bsObj.find("table",{"id":"giftList"}).children: print(child) #找table的子标签
for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings: print(sibling) #找tr后面的兄弟标签
nextsiblings与previoussiblings 一组
nextsibling与previoussibling 一个
parent 找父标签
邮箱正则: [A-Za-z0-9._+][email protected][A-Za-z]+.(com|org|edu|net)
通过正则表达式匹配内容: images = bsObj.findAll("img",{"src":re.compile("\.\.\/img\/gifts/img.*\.jpg")}) #都是以 ../img/gifts/img 开头 以 .jpg 结尾 for image in images: print(image["src"])
获取属性
tag.attrs 得到属性字典
imgTag.attrs["src"] 获取图片标签的src属性的值
soup.findAll(lambda tag: len(tag.attrs) == 2)
以上是关于BeautifulSoup基础的主要内容,如果未能解决你的问题,请参考以下文章