位置: 编程技术 - 正文

Python利用Beautiful Soup模块创建对象详解(python利用数据文件统计成绩)

编辑:rootadmin

推荐整理分享Python利用Beautiful Soup模块创建对象详解(python利用数据文件统计成绩),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python利用beautifulsoup输出第五个的内容,python利用for循环求1到100的奇数之和,python利用while循环求1+2+3......+n的和,python利用while循环求1+2+3......+n的和,python利用csv模块在对csv文件进行操作,python利用csv模块在对csv文件进行操作,python利用for循环求1到100的和,python利用while循环求1+2+3......+n的和,内容如对您有帮助,希望把文章链接给更多的朋友!

安装

通过 pip 安装 Beautiful Soup 模块:pip install beautifulsoup4 。

还可以使用 PyCharm IDE 来写代码,在 PyCharm 中的 Preferences 中找到 Project ,在里面搜索 Beautiful Soup 模块,进行安装即可。

创建 BeautifulSoup 对象

Beautiful Soup 模块广泛使用从网页中得到数据。我们能够使用 Beautiful Soup 模块从 HTML/XML 文档中提取任何数据,例如,网页中的所有链接或者标签内的内容。

为了实现这一点,Beautiful Soup 提供了不同的对象和方法。任何的 HTML/XML 文档能够转化成不同的 Beautiful Soup 对象,这些对象有着不同的属性和方法,我们能够从中提取到需要的数据。

Beautiful Soup 总共有如下三种对象:

BeautifulSoup Tag NavigableString

创建 BeautifulSoup 对象

创建一个 BeautifulSoup 对象是任何 Beautiful Soup 工程的起点。

BeautifulSoup 可以通过传一个字符串或者类文件对象(file-like object),例如机器上的文件或者网页。

通过字符串创建 BeautifulSoup 对象

在 BeautifulSoup 的构造器中通过传递一个字符串来创建对象。

通过类文件对象创建 BeautifulSoup 对象

在 BeautifulSoup 的构造器中通过传递一个类文件对象(file-like object)来创建对象。这在解析在线网页时非常有用。

除了传递类文件对象之外,我们还可以传递本地文件对象到 BeautifulSoup 的构造器来生成对象。

为 XML 解析创建 BeautifulSoup 对象

Beautiful Soup 模块同样能够用来解析 XML 。

当创建一个 BeautifulSoup 对象时, Beautiful Soup 模块将会选择合适的 TreeBuilder 类来创建 HTML/XML 树。默认情况下,选择 HTML TreeBuilder 对象,它将使用默认的 HTML 解析器,产生一个 HTML 结构树。在上面的代码中,由字符串生成 BeautifulSoup 对象,就是将它解析成了 HTML 树结构。

如果我们想要 Beautiful Soup 模块将输入的内容解析为 XML 类型,那么就需要在 Beautiful Soup 构造器中精确指定使用的 features 参数。通过特定的 features 参数,Beautiful Soup 将会选择最适合的 TreeBuilder 类来满足我们想要的特征。

理解 features 参数

每一个 TreeBuilder 根据它使用的解析器将会有不同的特征。因此,输入的内容根据传递到构造器的 features 参数也会有不同的结果。 在 Beautiful Soup 模块中,TreeBuilder 当前使用的解析器如下:

lxml html5lib html.parser

BeautifulSoup 构造器的 features 参数能够接受一个字符串列表或一个字符串值。

当前,每一个 TreeBuilder 支持的 features 参数和解析器如下表所示:

Features TreeBuilder Parser [‘lxml','html','fast','permissive'] LXMLTreeBuilder lxml [‘html','html5lib','permissive','strict','html5′] HTML5TreeBuilder html5lib [‘html','strict','html.parser'] HTMLParserTreeBuilder html.parser [‘xml','lxml','permissive','fast'] LXMLTreeBuilderForXML lxml

Python利用Beautiful Soup模块创建对象详解(python利用数据文件统计成绩)

根据指定的 feature 参数,Beautiful Soup 将会选择最合适的 TreeBuilder 类。如果在指定对应的解析器时,出现如下的报错信息,可能就是需要安装对应的解析器了。

就 HTML 文档而言,选择 TreeBuilder 的顺序是基于解析器建立的优先级,就如上表格所示的优先级。首先是 lxml ,其次是 html5lib ,最后才是 html.parser 。例如,我们选择 html 字符串作为 feature 参数,那么如果 lxml 解析器可用,则 Beautiful Soup 模块将会选择 LXMLTreeBuilder 。如果 lxml 不可用,则会选择 根据 html5lib 解析器选择 HTML5TreeBuilder 。如果在不可用,则会选择根据 html.parser 选择 HTMLParserTreeBuilder 了。

至于 XML ,由于 lxml 是唯一的解析器,所以 LXMLTreeBuilderForXML 总是会被选择的。

所以,为 XML 创建一个 Beautiful Soup 对象的代码如下:

输入的结果也是 XML 形式的文件 :

在创建 Beautiful Soup 对象时,更好的实践是指定解析器。这是因为,不同的解析器解析的结果内容大不相同,尤其是在我们的 HTML 文档内容非法时,结果更为明显。

当我们创建一个 BeautifulSoup 对象时,Tag 和 NavigableString 对象也就创建了。

创建 Tag 对象

我们可以从 BeautifulSoup 对象中得到 Tag 对象,也就是 HTML/XML 中的标签。

如下 HTML 代码所示:

从结果中可以看到 atag 的类型是 <class 'bs4.element.Tag'> 。而 soup.a 的结果就是 HTML 文档中的第一个 <a> 标签。 HTML/XML 标签对象具有名称和属性。名称就是标签的名字,例如 标签 <a> 的名称就是 a 。属性则是标签的 class 、id 、style 等。Tag 对象允许我们得到 HTML 标签的名称和属性 。

Tag 对象的名称

通过 .name 方式得到 Tag 对象的名称 。

同时也能够改变 Tag 对象的名称:

这样就将上面 HTML 文档中的第一个 <a> 标签名称换成了 <p> 标签了。

Tag 对象的属性

在 HTML 页面中,标签可能有不同的属性,例如 class 、id 、style 等。Tag 对象能够以字典的形式访问标签的属性。

也能通过 .attrs 的方式访问到,这样会将所有的属性内容都打印出来 :

创建 NavigableString 对象

NavigableString 对象持有 HTML 或 XML 标签的文本内容。这是一个 Unicode 编码的字符串。

我们可以通过 .string 的方式得到标签的本文内容 。

小结

代码小结如下:

BeautifulSoup

soup = BeautifulSoup(String) soup = BeautifulSoup(String,features=”xml”)

Tag

tag = soup.tag tag.name tag[‘attribute']

NavigableString

soup.tag.string

总结

标签: python利用数据文件统计成绩

本文链接地址:https://www.jiuchutong.com/biancheng/377150.html 转载请保留说明!

上一篇:Python利用Beautiful Soup模块修改内容方法示例(python利用format方法保留三位小数)

下一篇:Python中is与==判断的区别(python中的is和==的区别)

  • 福利费专票进项怎么抵扣
  • 材料抵扣货款怎么写简单协议范本
  • 本年利润总分类账图片
  • 代开发票含税价怎么核算为不含税发票
  • 经营用的电饭锅有哪些
  • 建筑施工企业涉税问题
  • 小规模纳税人发票怎么开
  • 生鲜配送公司财务制度
  • 工商年检股东变更流程
  • 股权转让过渡期损益会计处理
  • 政府补助款提现流程
  • 车辆保险赔款怎么入账
  • 公司开出的经济补偿金可以税前扣除吗
  • 税审需要什么资料和材料
  • 案例分析工程发票进项高于销项怎么抵扣?
  • 土地房产税征收范围
  • 资产改变用途的法律规定
  • 已付款收货未收到发票会计分录
  • 跨年度的暂估入库账务处理
  • 条形码费用属于哪个科目
  • 苹果双系统不小心删了苹果系统
  • 给员工小孩买礼物合适吗
  • 一个公司主营业务收入有多项
  • 2021工资扣税标准公式
  • PHP:mb_ereg_search_getpos()的用法_mbstring函数
  • phpstudy如何查看错误日志
  • 携税宝费用可以抵扣增值税吗
  • PHP:curl_multi_close()的用法_cURL函数
  • php数组函数题目
  • 预缴增值税少交了
  • 发行可转换优先股记入权益工具吗
  • 材料报废 开什么发票
  • 存货包括其他业务成本吗
  • 怎么计提企业所得税
  • 完美解决在ThinkPHP控制器中命名空间的问题
  • 新所得税会计准则
  • 框架 frame
  • 出口货物不退税进项可以开具普通发票吗
  • 旅游服务发票可以抵税吗
  • 当月已入账可是未入账
  • 利息收入做账
  • 固定资产报废清理怎么做账务处理的
  • 附有销售退回条件的商品销售,如果不能对退货
  • 给中间人回扣犯罪吗
  • 增值税专用发票上注明的价款含税吗
  • sqlserver2008实例配置
  • 财政应返还额度年末有余额吗?
  • 个人补缴的医保有钱返吗
  • 限售股算不算账户资产
  • 跨年度冲收入,冲成本分录如何做?
  • 工作服入什么科目类别
  • 一次摊销法的账务处理
  • 对公帐户资金转入个人帐户规定
  • 期末库存商品结转分录
  • 增资扩股影响原股东的利益吗
  • 打印银行电子流水发到别人邮箱,能看到我的账户余额吗
  • 收到红字发票如何入账
  • 什么叫零售差额退税
  • 生产型企业账务处理方法
  • 收到专票未抵扣能购买方开红字发票吗
  • 应收帐款坏账处理
  • wupdated.exe - wupdated是什么进程
  • 安装双系统ubuntu和win
  • ,linux
  • win8安装界面
  • centos必学的60个命令
  • linux常用命令chmod的使用
  • Cocos2d-x之getVisibleSize,getContentSize,boundingBox,getContentSizeInPixels,convertToGL,convertToUI
  • 激情台球游戏源码大全
  • node.js实战
  • shell入门
  • vue只适合做单页项目吗
  • javascript面向对象编程指南
  • socketjs-node/info
  • nodejs sleep方法
  • python的特点及应用范围
  • JavaScript中的this指向
  • 海关进口增值税专用缴款书在哪里打印
  • 企业完税证明怎么打印
  • 请领导审核怎么说
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设