beautifulsoup 使用

1 find() and findAll()

function definition :

findAll(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)

text sample

"Heavens! what a virulent attack!" replied "green">the prince, not in the least disconcerted by this reception.

findAll() usage

findAll({"h1","h2","h3","h4","h5","h6"})findAll("span", {"class":{"green", "red"}})

nameList = bsObj.findAll(text="the prince")

allText = bsObj.findAll(id="text")

images = bsObj.findAll("img",{"src":re.compile("../img/gifts/img.*.jpg")}) // 正则表达式

soup.findAll(lambda tag: len(tag.attrs) == 2) // lambda 表达式

bsObj.findAll(id="text")和 bsObj.findAll("", {"id":"text"}) 效果相同

2 Navigating Trees

.children 标签
for child in bsObj.find("table",{"id":"giftList"}).children:

.tr.next_siblings 标签
for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings:

parent 和 parents标签
bsObj.find("img",{"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text())

拓展

bs4 替代库

lxml
这个库(http://lxml.de/)可以用来解析 HTML 和 XML 文档,以非常底层的实现而闻名 于世,大部分源代码是用 C 语言写的。虽然学习它需要花一些时间(其实学习曲线越 陡峭,表明你可以越快地学会它),但它在处理绝大多数 HTML 文档时速度都非常快。
• HTML parser
这是 Python 自带的解析库(https://docs.python.org/3/library/html.parser.html)。因为它不 用安装(只要装了 Python 就有),所以可以很方便地使用。

你可能感兴趣的:(beautifulsoup 使用)