python爬虫(7)——BeautifulSoup
今天介绍一个非常好用的python爬虫库——beautifulsoup4。beautifulsoup4的中文文档参考网址是:http://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/
首先使用pip安装这个库,当然还要用到lxml这个解析器,配合使用可以很方便的帮助我们处理html文档,提取所需要的信息。可以使用pip list命令查看你已经安装好的包。提醒大家注意一点!一定是pip install beautifulsoup4 ,这个4千万别忘记了,否则会出现如下报错信息:
print "Unit tests have failed!"
SyntaxError: Missing parentheses in call to 'print'
Command "python setup.py egg_info" failed with error code 1 in C:\Users\ADMINI~1\AppData\Local\Temp\pip-build-4g6q3fil\...
因为python中的print函数,在python3中是需要加括号的,所以我们可以知道报错是因为版本不兼容导致的。python3使用的beautifulsoup4,我之前安装就是出现了这个问题,好在很快发现了解决了。安装成功会出现successfully。
C:\Users\Administrator\Desktop
λ ipython
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
#导入这个包
In [1]: from bs4 import BeautifulSoup In [2]: html="""\
...: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>我的博客(CCColby.com)</title> </head> <body> <video width="320" height="240" controls> <source src="m
...: ovie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> 你的浏览器不支持 video 标签。 </video> </body> </html>
...: """
#创建对象,如果不指定解析方式,会出现警告
In [3]: soup=BeautifulSoup(html)
c:\users\administrator\appdata\local\programs\python\python36\lib\site-packages\bs4\__init__.py:181: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("lxml"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently. The code that caused this warning is on line 193 of the file c:\users\administrator\appdata\local\programs\python\python36\lib\runpy.py. To get rid of this warning, change code that looks like this: BeautifulSoup(YOUR_MARKUP}) to this: BeautifulSoup(YOUR_MARKUP, "lxml") markup_type=markup_type))
#我们制定解析方式为'lxml'
In [4]: soup=BeautifulSoup(html,"lxml")
#格式化输出soup对象
In [5]: print(soup.prettify())
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8"/>
<title>
我的博客(CCColby.com)
</title>
</head>
<body>
<video controls="" height="" width="">
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
你的浏览器不支持 video 标签。
</source>
</source>
</video>
</body>
</html>
beautifulsoup将复杂的HTML文档归结为一个树形结构,每个节点都是python对象。这些对象分成四种:Tag、NavigableString、BeautifulSoup、Comment。
可以利用soup加上标签名,可以轻松的获取标签内容
In [6]: print(soup.title)
<title>我的博客(CCColby.com)</title> In [7]: print(soup.head)
<head> <meta charset="utf-8"/> <title>我的博客(CCColby.com)</title> </head> In [8]: print(soup.source)
<source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> 你的浏览器不支持 video 标签。 </source></source>
如果我们要获取标签内部的文字怎么办?很简单
In [9]: print(soup.titie.string) 我的博客(CCColby.com)
关于beautifulsoup的遍历文档树,可以用contents方法、children方法。如果要遍历所有子节点,则用descendants属性。具体的用法在实例中学习就可以了。
搜索文档树find_all(name ,attrs,recursive,text,**kwargs)
其中name参数可以查找所有名字为name的Tag,字符串对象会被自动忽略;可以传入字符串、正则表达式(re.compile()编译过的)、传列表。text参数是查找文档中的字符内容。
还有一种查找方法CSS选择器。
#通过标签名查找 print(soup.select('title')) #通过属性查找 print(sou.select(a[class="name"]')) #以上select返回的结果都是列表形式,要用遍历输出,然后用get_text()方法来获取它的内容 for title in soup.select('title'):
print(title.get_text())
下一篇文章,讲一个用beautifulsoup实例来加深理解。
python爬虫(7)——BeautifulSoup的更多相关文章
- 使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解(新手必学)
为大家介绍下Python爬虫库BeautifulSoup遍历文档树并对标签进行操作的详细方法与函数下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最 ...
- Python爬虫——用BeautifulSoup、python-docx爬取廖雪峰大大的教程为word文档
版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 廖雪峰大大贡献的教程写的不错,写了个爬虫把教程保存为word文件,供大家方便下载学习:http://p ...
- 【Python爬虫】BeautifulSoup网页解析库
BeautifulSoup 网页解析库 阅读目录 初识Beautiful Soup Beautiful Soup库的4种解析器 Beautiful Soup类的基本元素 基本使用 标签选择器 节点操作 ...
- Python爬虫之BeautifulSoup的用法
之前看静觅博客,关于BeautifulSoup的用法不太熟练,所以趁机在网上搜索相关的视频,其中一个讲的还是挺清楚的:python爬虫小白入门之BeautifulSoup库,有空做了一下笔记: 一.爬 ...
- Python爬虫系列-BeautifulSoup详解
安装 pip3 install beautifulsoup4 解析库 解析器 使用方法 优势 劣势 Python标准库 BeautifulSoup(markup,'html,parser') Pyth ...
- Python爬虫之Beautifulsoup模块的使用
一 Beautifulsoup模块介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Be ...
- Python 爬虫—— requests BeautifulSoup
本文记录下用来爬虫主要使用的两个库.第一个是requests,用这个库能很方便的下载网页,不用标准库里面各种urllib:第二个BeautifulSoup用来解析网页,不然自己用正则的话很烦. req ...
- 通过哪吒动漫豆瓣影评,带你分析python爬虫与BeautifulSoup快速入门【华为云技术分享】
久旱逢甘霖 西安连着几天温度排行全国三甲,也许是<哪吒之魔童降世>的剧组买通了老天,从踩着风火轮的小朋友首映开始,就全国性的持续高温,还好今天凌晨的一场暴雨,算是将大家从中暑边缘拯救回来了 ...
- python爬虫之BeautifulSoup
爬虫有时候写正则表达式会有假死现象 就是正则表达式一直在进行死循环查找 例如:https://social.msdn.microsoft.com/forums/azure/en-us/3f4390ac ...
- python爬虫入门--beautifulsoup
1,beautifulsoup的中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 2, from bs4 import Be ...
随机推荐
- IntelliJ IDEA 2017.3下载与安装
大约在2017年暑假的时候知道了IntelliJ IDEA,但是那个时候一心认为有Eclipse就足够用了,然而今天在网上冲浪的时候发现,IntelliJ IDEA是java语言开发的集成环境,这款开 ...
- 学而精计算机公共基础学习之路TEST2(程序设计基础)
程序设计基础 程序设计方法与风格 1.程序设计方法 程序设计: 指设计.编制.调试程序的方法和过程. 程序设计方法是研究问题求解如何进行系统构造的软件方法学.常用的程序设计方法有:结构化程序设计方法. ...
- APACHE 服务器开启URL REWRITE模块的方法
最近做wordpress,发现固定链接总是设置不了.后来发现是由于apache服务器的URL REWIRITE模块没有开启导致. 查询了资料之后终于设置成功,记录下步骤: 1:开启apache的url ...
- 虚拟主机导入MySQL出现Unknown character set: ‘utf8mb4’
http://www.lmlblog.com/14.html 前几天进行网站搬家,MySQL导入数据的时候,出现以下错误(没有定义的编码集utf8mb4): SQL 查询: ; MySQL 返回:文档 ...
- 《并行程序设计导论》——MPI(Microsoft MPI)(6):并行排序算法
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- IOS中UIScrollView的contentSize、contentOffset和contentInset属性
IOS中,UIScrollView是可以滚动的视图,其中最常用的UITableView就是继承了UIScrollView. 跟所有的view一样,UIScrollView有一个frame属 性,同时, ...
- MyCat 启蒙:分布式系统的数据库架构演变
文章首发于[博客园-陈树义],点击跳转到原文<MyCat 启蒙:分布式系统的数据库架构演变> 单数据库架构 一个项目在初期的时候,为了尽可能快地验证市场,其对业务系统的最大要求是快速实现. ...
- ssm web.xml配置解析
以下为web.xml的配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=& ...
- TP手册学习第二天
默认情况下,URL是不区分大小写的,访问规则:--模块/控制器/操作/参数/值,如果要访问驼峰法的控制器类BlogTest,则需要使用:blog_test MVC是一个设计模式,它强制性的使应用程序的 ...
- 安装Java和Pycharm的步骤
[root@nhserver1 usr]# java -versionjava version "1.7.0_25"OpenJDK Runtime Environment (rhe ...