MarkdownPad Document
BeautifulSoup
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)
时间: 2024-10-21 12:04:44