Python的HTML解析器 BeautifulSoup

MIT
Python
跨平台
2010-01-19
红薯

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.

使用BeautifulSoup解析这段代码,能够得到一个 BeautifulSoup 的对象,并能按照标准的缩进格式的结构输出:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')

print(soup.prettify())
# <html>
#  <head>
#   <title>
#    The Dormouse's story
#   </title>
#  </head>
#  <body>
#   <p class="title">
#    <b>
#     The Dormouse's story
#    </b>
#   </p>
#   <p class="story">
#    Once upon a time there were three little sisters; and their names were
#    <a class="sister" href="http://example.com/elsie" id="link1">
#     Elsie
#    </a>
#    ,
#    <a class="sister" href="http://example.com/lacie" id="link2">
#     Lacie
#    </a>
#    and
#    <a class="sister" href="http://example.com/tillie" id="link2">
#     Tillie
#    </a>
#    ; and they lived at the bottom of a well.
#   </p>
#   <p class="story">
#    ...
#   </p>
#  </body>
# </html>
soup.title
# <title>The Dormouse's story</title>

soup.title.name
# u'title'

soup.title.string
# u'The Dormouse's story'

soup.title.parent.name
# u'head'

soup.p
# <p class="title"><b>The Dormouse's story</b></p>

soup.p['class']
# u'title'

soup.a
# <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>

soup.find_all('a')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
#  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
#  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

soup.find(id="link3")
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>

安装:

如果你用的是新版的Debain或ubuntu,那么可以通过系统的软件包管理来安装:

$ apt-get install Python-bs4

Beautiful Soup 4 通过PyPi发布,所以如果你无法使用系统包管理安装,那么也可以通过 easy_install 或 pip 来安装.包的名字是 beautifulsoup4 ,这个包兼容Python2和Python3.

$ easy_install beautifulsoup4

$ pip install beautifulsoup4

(在PyPi中还有一个名字是 BeautifulSoup 的包,但那可能不是你想要的,那是 Beautiful Soup3 的发布版本,因为很多项目还在使用BS3, 所以 BeautifulSoup 包依然有效.但是如果你在编写新项目,那么你应该安装的 beautifulsoup4 )

如果你没有安装 easy_install 或 pip ,那你也可以 下载BS4的源码 ,然后通过setup.py来安装.

$ Python setup.py install

如果上述安装方法都行不通,Beautiful Soup的发布协议允许你将BS4的代码打包在你的项目中,这样无须安装即可使用.

作者在Python2.7和Python3.2的版本下开发Beautiful Soup, 理论上Beautiful Soup应该在所有当前的Python版本中正常工作

加载中

评论(1)

MrMign
MrMign
解析包含中文的页面时,有的页面编码正常,有的页面乱码,这是什么问题呢? Beautiful Soup

暂无资讯

1
回答
爬虫 爬取饿了么数据出现问题

import requests import json import time from bs4 import BeautifulSoup import ...

前天 16:28
1
回答
python安装Beautifulsoup 在cmd运行 setup.py install时报错: error: package directory 'bs4' does not exist
铂金胖子 的回答 2016/04/08 16:30
最佳答案
如果你的beautifulsoup的包下载到了本地, setup.py 当前的目录下面没有 bs4这个目录
1
回答
关于中文网页爬虫显示乱码的问题

大家好,我在爬去一个中文网页的时候碰到了乱码的问题,试了很久都没成功,请帮我看下问题出在哪里? 网址: http://www.duxieren.com/s...

2016/01/03 13:13
3
回答
为什么我抓到的页面无法用BS正确提取数据啊?

我试图抓取一个人的知乎主页动态(代码如下),但采用这种方法抓取下来的页面里的</a></div>标签全部多了一个\,变成了<\/a><\/div>,并且用...

2015/06/23 12:01
42
回答
Python 开发者应该知道的 7 个开发库

本文由 OSChina 译自 7 Python Libraries you should know about 在我多年的 Python 编程经历以及在 ...

2012/11/12 21:55
5
回答
怎么使用beautifulsoup获取指定div标签内容
拜仁慕尼黑 的回答 2013/04/12 11:48
最佳答案
getContent = soup.find('div',id='doc').find('div',id='scontainer').find.... 这样一级级的找,定点打击!特别准确
3
回答
python BeautifulSoup怎么获取无标签文本?
se77en 的回答 2013/01/08 13:12
最佳答案
从StackOverFlow上找到答案了 soup = BeautifulSoup(html) [p.next_sibling.strip() for p in soup.findAll('p')]
2
回答
beautifulsoup的一个灵异现象
Xsank 的回答 2013/03/02 21:05
最佳答案
>>> print str(soup.find("title")) <title>The Hot 100 : Page 2 | Billboard</title> >>> print str(soup.find("a")) <a href="/" rel="home" title="Home"...

没有更多内容

加载失败,请刷新页面

没有更多内容

BeautifulSoup安装及其应用

BeautifulSoup的安装使用, 解决导入模块是出错

2014/01/02 20:48
8K
0
Python3.x中beautifulsoup的使用注意事项

beautifulsoup的官方中文文档:http://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html 1.从urlopen中读取url,然后传入beautifulsoup,beautifulsoup默认网页编码格式是UTF-8...

2014/10/28 19:12
59
0
ubuntu12.04 安装BeautifulSoup遇到的问题

root@ubuntu :/home/chris# apt-get install python-setuptools Reading package lists... Done Building dependency tree Reading state information... Done The following packages were ...

2012/05/18 07:31
1K
0
python BeautifulSoup模块的安装

python BeautifulSoup模块的安装 ···一个BeautifulSoup的模块,安装就浪费了俺这么长时间,下载的是BeautifulSoup4-4.1.3, 安装的时候就是 python setup.py build python setup.py inst...

2014/10/17 17:30
129
0
BeautifulSoup学习笔记1

from bs4 import BeautifulSoup BeautifulSoup是一个类,继承了Tag类.每个BeautifulSoup对象实例,通过html内容进行构建.如下: bsObj=BeautifulSoup(urllib.request.urlopen(url).read()) Bea...

05/14 22:53
23
0
(转)Python中第三方模块的使用心得

3.4. Python中第三方模块的使用心得 第 3 章 python学习心得和体会 3.4. Python中第三方模块的使用心得 前面已经说了,其实学习Python的过程,很多时候就是在学习如何使用第三方模块,完成自...

2013/05/22 21:46
4.5K
0
python---easy_install 安装软件 及BeautifulSoup 中文乱码

安装easy_install工具 使用ez_setup.py脚本方便安装: wget - q http: // peak.telecommunity.com/dist/ez_setup.py python ez_setup.py 安装完后,最好确保easy_install所在目录已经被加到P...

2012/04/10 22:37
977
0
Learn Beautiful Soup(7) —— BeautifulSoup的输出

BeautifulSoup不仅仅只是可以查找,定位和修改文档内容,同样也可以用一个好的 格式进行输出显示。BeautifulSoup可以处理不同类型的输出: 格式化的输出 非格式化的输出 格式化输出 Beautifu...

2015/04/13 12:58
69
0
Learn Beautiful Soup(2)——BeautifulSoup的对象

BeautifulSoup有下列3个对象 BeautifulSoup Tag NavigableString BeautifulSoup对象的创建 创建一个BeautifulSoup对象是任何Beatutiful Soup工程的第一步。 BeatutifulSoup对象的创建可以通过...

2015/04/13 12:58
32
0
Learn Beautiful Soup(6) —— BeautifulSoup中对于编码的支持

所有的网页都有一个自己的编码。UTF-8是目前网站的标准编码。所以,当爬取这些网页时,爬虫程序必须要能理解这些网页的编码。否则,很有可能你在网页上看到的是正确的字符,而爬取获得的结果...

2015/04/13 12:57
22
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部