BeautifulSoup 用法总结

来源:互联网 发布:js小于或等于 编辑:程序博客网 时间:2024/06/16 14:03

介绍

简介

BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库

安装

pip install beautifulsoup4

解析器

Beautiful Soup支持Python标准库中的HTML解析器(’html.parser’),还支持一些第三方的解析器,比如lxml,推荐用后者,纯C实现的,速度更快:

pip install lxml

引入及容错处理

from bs4 import BeautifulSoupsoup=BeautifulSoup(html_doc,'lxml')soup=soup.prettify() #容错处理===>自动补全代码

选择器

一个html是一个对象,对象可以嵌套对象;每个soup对象下的每一个标签,也都是对象。

标签选择器

  • 标签选择器:即直接通过标签名字选择,选择速度快,如果存在多个相同的标签则只返回第一个:soup.head # soup.tag
  • 链式选择:soup.parentTag.childTag

标准选择器

find与find_all方法: 可根据标签名,属性,内容查找文档,但是find只找第一个元素。

  • 按照标签名查找:soup.find(name='div')
  • 按照属性查找:soup.find(name='div', attrs={'id': 'aritcle-body'})
  • 按照文本内容查找:soup.find(text='xxxxxxx')按照完整内容匹配(是==而不是in),得到的结果也是内容

CSS选择器

通过select方法来选择,支持CSS选择的器的所有方式,在此不详述。

  • soup.select('.myclass span') 通过class属性选择
  • soup.select('#article-body') 通过id选择

关联查找

  • 子节点、子孙节点:
    • 子节点:soup_obj.contents 返回列表;soup_obj.children返回迭代器
    • 子孙节点:soup_obj.descendants
  • 父节点、祖先节点:soup_obj.parent父节soup_obj.parents祖先节点
  • 兄弟节点:soup_obj.next_siblingssoup_obj.previous_siblings

常用属性和方法

  • 获取标签的名称:soup_obj.name
  • 获取标签的属性:soup_obj.attrs 返回所有属性的字典;soup_obj.get('href')获取具体属性的值
  • 获取标签的内容:soup_obj.stringsoup.tag.text
  • 清空内部元素,保留当前标签:soup_obj.clear()
  • 清空,包括自己:soup_obj.decompose
  • 同上,但是有返回值:soup.extract()
  • 正则查找:rep = re.comiple('^p')soup.find_all (name=rep)