使用pyquey时碰到多值属性没办法处理的情况,想起了BS4可以处理这种情况,于是大概回顾了一下BS4的文档,把温习的知识点写到博客,以便以后查阅。
bs4官方文档地址点击打开链接
一、bs4对象种类:
1、Tage 相当于htm文档中的标签,和标签一样,它有name和attribute属性,通过标签名.name和标签名.attribute访问。
2、 NavigableString对象,可遍历的字符串,通过tag.string访问,该对象是标签中的字符串对象,支持BS4中遍历和搜索文档树种的一些方法(不支持find)
3、BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,它支持 遍历文档树 和 搜索文档树 中描述的大部分的方法,没有name和attribute属性。
4、注释及特殊字符串
二、过滤器类型:过滤器其实就是传入选择方法中的参数的类型,可以使字符串、正则表达式、列表、Ture和方法
1、字符串,一般是标签名
2、正则表达式,使用re模块的match()方法匹配符合模式的文档
3、列表,返回与列表中元素一致的文档内容
4、Ture,可以匹配任何值
5、方法,定义一个方法,官方文档例子解释的很清楚
三、搜索文档树 find_all()和find()
find_all( name , attrs , recursive , text , **kwargs )
1、name 参数可以查找所有名字为 name 的tag,字符串对象会被自动忽略掉.
2、kewords参数,用来通过制定属性名来搜索文档
3、attrs参数,通过赋值一个字典给该参数可以查找一些不能通过keywords参数搜索的属性
find_all() 几乎是Beautiful Soup中最常用的搜索方法,所以我们定义了它的简写方法. BeautifulSoup 对象和 tag 对象可以被当作一个方法来使用
soup.find_all("a")
soup("a")
以上两种搜索结果是一样的。