python BeautifulSoup库的安装与使用
1.BeautifulSoup简介
BeautifulSoup4和lxml一样,BeautifulSoup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据。
BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则Python会使用Python默认的解析器,lxml解析器更加强大,速度更快,推荐使用lxml解析器。
BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,BeautifulSoup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
2.BeautifulSoup的安装
首先我们需要安装一个BeautifulSoup库。我安装的版本是python3。所以就可以直接在cmd下用pip3命令进行安装。
命令:
pip3installbeautifulsoup4
在安装好BeautifulSoup后,我们可以通过导入该库来判断是否安装成功。
命令:
>>> frombs4importBeautifulSoup
回车后不报错,这说明我们已经将其安装成功。
3.BeautifulSoup常用功能
#beautifulsoup网页中提取信息的python库 #BeautifulSoup对象表示的是一个文档的全部内容 #prettify()按照标准的缩进格式的结构输出 #get_text()会将HTML文档中的所有标签清除,返回一个只包含文字的字符串 frombs4importBeautifulSoup text='''''' #create对象 bf=BeautifulSoup(text) #按照标准缩进格式输出 print(bf.prettify()) #会将HTML文档中的所有标签清除,返回一个只包含文字的字符串 print(bf.get_text()) #Tag对象 #标签表示HTML中的一个个标签 #name #attrs tag=bf.title#获取title标签 print(tag) print(type(tag))#tag类型 print(tag.name)#标签名称 print(tag.attrs)#标签属性 print(tag.attrs["lang"])#单独获取某个属性方法1 print(bf.title["lang"])#单独获取某个属性方法2 #NavigableStringtag.string #表示标签中的文字 print(tag.string) print(type(tag.string))#查看数据类型 #Comment注释部分 #一个特殊类型的NavigableString对象 #输出的内容不包括注释符号 string=''' ''' sp=BeautifulSoup(string) print(sp) print(sp.p.string)#去获取标签中是文字 HarryPotter 29.99 LearningXML 39.95
#两个常用函数 #find_all()搜索当前tag的所有tag子节点,并判断是否符合给定的条件 #返回结果是一个列,可以包含多个元素 print(soup.find_all('title'),end="\n-------\n") #find()直接返回第一个元素 print(soup.find("title")) print(soup.find_all("title",lang="eng"))#查找title标签属性lang=eng print(soup.find_all("title",{"lang":"eng"}))#结果同上 print(soup.find_all(["title","price"]))#获取多个标签 print(soup.find_all("title",lang="eng")[0].get_text())#获取文本 #三大常见节点 #子节点一个Tag可能包含多个字符串或其他的tag,这些都是这个tag的子节点 #父节点配个tag或字符串都有父节点:被包含在某个tag中 #兄弟节点平级的节点 end="\n-------\n" print(soup.book,end)#获取book节点信息 print(soup.book.contents,end)#获取book下的所有子节点 print(soup.book.contents[1],end)#获取book下的所有子节点中的第一个节点 print(soup.book.children,end)#children生成迭代器 forchildinsoup.book.children: print("===",child) print(soup.title.parent,end) print(soup.book.parent,end) forparentinsoup.title.parents:#注意parent和parents区别 print("===",parent.name) print(soup.title.next_sibling,end)#获取该节点的下一个兄弟节点 print(soup.title.previous_sibling,end)#获取该节点的上一个兄弟节点 print(soup.title.next_siblings,end)#获取该节点的全部兄弟节点 foriinsoup.title.next_siblings: print("===",i)
以上就是pythonBeautifulSoup库的安装与使用的详细内容,更多关于pythonBeautifulSoup库的资料请关注毛票票其它相关文章!