Python利用BeautifulSoup解析Html的方法示例

yipeiwu_com7年前Python基础

介绍

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

本文将给大家详细介绍关于Python利用BeautifulSoup解析Html的方法,下面话不多说了,来一起看看详细的介绍:

1. 安装Beautifulsoup4

pip install beautifulsoup4
pip install lxml
pip install html5lib

lxml 和 html5lib 是解析器

2. html 

<!-- This is the example.html file. -->
 
<html><head><title>The Website Title</title></head>
<body>
<p>Download my <strong>Python</strong> book from <a href="http://inventwithpython.com" rel="external nofollow" >my website</a>.</p>
<p class="slogan">Learn Python the easy way!</p>
<p>By <span id="author">Al Sweigart</span></p>
</body></html>

上面的html保存html文件

3.开始解析

import bs4
 
exampleFile = open('example.html')
exampleSoup = bs4.BeautifulSoup(exampleFile.read(),'html5lib')
elems = exampleSoup.select('#author')
type(elems)
print (elems[0].getText())

结果输出 Al Sweigart

BeautifulSoup 使用select 方法寻找元素,类似jquery的css选择器

  • soup.select(‘div') ———————–所有为<div>的元素
  • soup.select(‘#author') —————–id为author的元素
  • soup.select(‘.notice') ——————class 为notice的元素

参考《Python 编程快速上手—–让繁琐工作自动化》

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对【听图阁-专注于Python设计】的支持

相关文章

python类的实例化问题解决

python类的实例化问题解决

类的实例化问题解决 运行结果: line 21, in <module> s=speaker('ken',10,'aaa') TypeError: __init__(...

用pycharm开发django项目示例代码

用pycharm开发django项目示例代码

在pycharm(企业版)中新建Django工程,注意使用虚拟环境 创建成功后,在pycharm显示的工程目录结构如下: 打开pycharm的Terminal,进入该工程的目录新建...

浅谈python对象数据的读写权限

面向对象的编程语言在写大型程序的的时候,往往比面向过程的语言用起来更方便,安全。其中原因之一在于:类机制。 类,对众多的数据进行分类,封装,让一个数据对象成为一个完整的个体,贴近现实生活...

python3学习之Splash的安装与实例教程

python3学习之Splash的安装与实例教程

前言 Splash是一个javascript渲染服务。它是一个带有HTTP API的轻量级Web浏览器,使用Twisted和QT5在Python 3中实现。QT反应器用于使服务完全异步,...

python开发之thread线程基础实例入门

本文实例讲述了python开发之thread线程基础。分享给大家供大家参考,具体如下: 说到线程,我们要知道啥是串行,啥是并行程序 举个例子: 串行程序,就是一个一个的执行程序 #p...