BeautifulSoup是python的一个库,最主要的功能是从网页爬取数据,官方是这样解释的:BeautifulSoup提供一些简朴,python式函数来处理导航,搜刮,修改分析树等功能,其是一个工具库,通过分析文档为用户提供必要抓取的数据,因为简朴,所有不必要多少代码就可以写出一个完整的步伐bs4安装
直接使用pip install命令安装
lxml是一个高性能的Python库,用于处理XML与HTML文档,与bs4相比之下lxml具有更强盛的功能与更高的性能,特殊是处理大型文档时尤为明显.lxml可以与bs4结合使用,也可以单独使用lxml安装
同样使用pip install 安装
当你使用BeautifulSoup 分析一个HTML或XML文档时,BeautifulSoup会整个文档转换为一个树形结构,其中每个结点(标签,文本,解释)都被表示为一个python对象BeautifulSoup的树形结构
在HTML文档中,根结点通常是标签,其余的标签和文本内容则是其子结点若有以下一个HTML文档:
BeautifulSoup有四种主要类型,Tag,NavigableString,BeautifulSoup,CommentTag
Tag对象与HTML或XML原生文档中的标签雷同,每个Tag对象都可以包含其他标签,文本内容和属性
NavigableString对象表示标签内的文本内容,是一个不可变字符串,可以提供Tag对象的.string获取
BeautifulSoup对象表示整个文档的内容.其可以被视为一个特殊的Tag对象,但没有名称与属性.其提供了对整个文档的遍历,搜刮和修改的功能
Comment对象是一个特殊类型的NavigableString对象,表示HTML和XML中的解释部门
BeautifulSoup提供了许多方法来遍历分析后的文档树导航父节点
.contents与.children属性仅包含tag直接子结点,例如标签只有一个直接子结点
BeautifulSoup提供了多种方法来搜刮分析后的文档树find_all(name , attrs , recursive , string , **kwargs)
接下来我们来详细分析一下每个参数的含义name参数
name参数可以查找所有名字为name的tag,字符串对象名字会主动被忽略
传入字符串是最简朴的过滤器,在搜刮方法中传入一个字符串参数,BeautifulSoup会查找与字符串匹配的内容
若传入正则表达式作为参数,BeautifulSoup会通过正则表达式match()来匹配内容
如果传入列表参数,Beautiful Soup会将与列表中任一元素匹配的内容返回
在BeautifulSoup中,**kwargs(即关键字参数)可用于通过标签的属性来查找特定的标签.这些关键字参数可以直接传递给find,find_all方法,使得搜刮更增强盛.标签的属性名作为关键字参数,值可以是字符串、正则表达式或列表使用字典
HTML的属性名称与Python的保留字冲突,为了防止冲突,BeautifulSoup提供了一些特殊的替换名称
text/string参数答应操作者根据标签的文本内容举行搜刮,与name参数类似,text参数也支持多种类型的值,包括正则表达式,字符串列表和True,早期bs4支持text,近期bs4将text都改为string使用字符串匹配
你可以直接传递一个字符串作为 string参数的值,BeautifulSoup 会查找所有包含该字符串的标签
BeautifulSoup中的limit参数用于限制find_all方法结果的返回数量,当只必要查询前几个标签时,使用limit参数可以提高搜刮搜刮效率,结果与SQL中的limit关键字类似,当搜刮到的结果数量到达 limit 的限制时,就克制搜刮返回结果
BeautifulSoup 提供了 find_parents() 和 find_parent() 方法,用于在分析后的文档树中向上查找父标签.两个方法的主要区别在于返回的结果数量
我们在写CSS时,标签名不加任何修饰,类名前加点,id名前加#,BeautifulSoup中也可以使用类似的方法来筛选元素,select(selector, namespaces=None, limit=None, **kwargs)
BeautifulSoup中的select()方法答应使用CSS选择器来查找HTML文档元素,其返回一个包含所有匹配元素的列表类似与find_all()方法
选择具有特定属性或属性值的标签
选择具有特定属性值的标签
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |