Python爬虫基础(二)--beautifulsoup-美丽汤框架介绍


beautifulsoup 框架介绍

框架官方中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

框架基本使用:

Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

  Tag:标签

  NavigableString:  可遍历字符串对象

  BeautifulSoup:表示一个文档的全部内容

  Comment:注释

find_all()函数:

find_all( name , attrs , recursive , string , **kwargs )

  搜索 name 参数的值可以使任一类型的 过滤器 ,字符窜,正则表达式,列表,方法或是 True

       recursive :布尔型,是否查找所有子节点,默认为true

eg:

find_all("a")  查找标签为a

find_all(id="xx")  查找id为xx的属性

soup.find_all(href=re.compile("elsie"), id='link1')  查找属性值包含"elsie"且id为'link1'

data_soup.find_all(attrs={"data-foo": "value"})  查找属性名为data-foo值为value

soup.find_all("a", class_="sister")  查找标签为a,class为sister(注意class是python中的关键字,所以这里要用class_)

soup.find_all("a", attrs={"class": "sister"})   查找标签为a,class属性为sister

find_next_siblings() 和 find_next_sibling()  平行查找(在同一个父节点下的下一个/所有子节点,注意是同一个父节点下)

css选择器:select()

soup.select("title")  查找title标签

soup.select("p:nth-of-type(3)")  查找p标签

soup.select("body a")  查找body标签中的a标签

soup.select(".sister")    查找class为sister的标签  注意有个.

soup.select("[class~=sister]")  查找class为sister的标签 符号:~=

soup.select("a#link2")     查找a标签且id为lingk2

soup.select("#link1,#link2")  查找id为link1或者lingk2

soup.select('a[href]')    查找a标签且存在属性名为href

输出:

格式化输出:soup.prettify()

压缩输出:str(soup) 或者 unicode(soup.a)  (应用于只想得到结果字符串,不重视格式)

输出tag中的文本内容:get_text()

输出tag中的文本内容扩展:soup.get_text(strip=True)  去除文本前后的空白符

其他详细介绍可以参阅官方文档