beautifulsoup_Python爬虫常用的三大库(Beautiful Soup的介绍)

4736f3bef72a4dc6ae9bccb008d4138e

今天就介绍Beautiful Soup哦,下次再更新PyQuery的用法

Request、Beautiful Soup、PyQuery的用法

在前面的教程中我们已经讲解了正则表达式的使用,但是相对于我们来说还是有些麻烦,一不小心就会出错;在python中我们可以使用一个更加强大的工具,使用它我们可以快速从HTML和XML标签中提取我们想要的内容。

一、Beautiful Soup的简介与安装

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

二、Beautiful Soup 安装

Beautiful Soup 3目前已经停止开发,推荐在现在的项目中使用Beautiful Soup 4,不过它已经被移植到BS4了,也就是说导入时我们需要 import bs4。所以这里我们用的版本是Beautiful Soup 4.4.0(简称BS4),另外据说BS4对Python3的支持不够好,不过我用的是Python2.7.7,如果有小伙伴用的是Python3版本,可以考虑下载BS3版本。
我们可以使用pip或easy_install来安装Beautiful Soup库:

easy_install beautifulsoup4
pip install beautifulsoup4# 在Python3中安装pi3 install beautifulsoup4

三、安装Lxml与html5lib

Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是lxml.根据操作系统不同,可以选择下列方法来安装lxml:

apt-get install Python-lxmleasy_install lxmlpip install lxml# python3版本pip3 install lxml

另一个可供选择的解析器是纯Python实现的html5lib, html5lib的解析方式与浏览器相同,可以选择下列方法来安装html5lib:

apt-get install Python-html5libeasy_install html5libpip install html5libpip3 install html5lib
f87adfded62849a482ce52c40eb3244b

推荐使用lxml作为解析器,因为效率更高. 在Python2.7.3之前的版本和Python3中3.2.2之前的版本,必须安装lxml或html5lib, 因为那些Python版本的标准库中内置的HTML解析方法不够稳定。

三、开始使用Beautiful Soup

由于Beautiful Soup文档的内容比较多,我们只整理一些常用的用法,更多可以参考Beautiful Soup官方文档

1、创建Beautiful Soup对象

使用BeautifulSoup前需要引入bs4库,我们仅需要将一段文档传入BeautifulSoup的构造器,就能得到一个文档的对象,;同时我们也可以传入一段字符串或者一个文件。

from bs4 import BeautifulSoupsoup = BeautifulSoup(open("index.html"))soup = BeautifulSoup("data")

首先,文档被转换成Unicode,并且HTML的实例都被转换成Unicode编码

soup = BeautifulSoup("spider test")print(soup)# 

spider test

然后,Beautiful Soup会选择最合适的解析器来解析这段文档,如果手动指定解析器那么Beautiful Soup会选择指定的解析器来解析文档。

2、四大对象种类

Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

Tag
NavigableString
BeautifulSoup
Comment
下面我们进行一一介绍

(1)、TagTag对象与XML或HTML原生文档中的tag相同,我们可以理解为Html中的标签:

soup = BeautifulSoup('Extremely bold')tag = soup.btype(tag)# 

从上面的Demo可以看到其实b就是一个Tag,我们可以快速使用BeautifulSoup来获取tag:

# 快速提取a标签a = soup.a# 快速提取p标签p = soup.p# 快速提取img标签img = soup.img# 快速提取title标签title = soup.title# 快速提取head标签head = soup.head# 快速提取div标签div = soup.div

Tag有很多方法和属性,其中最重要的属性: name和attributes

(2)、name每个tag都有自己的名字,通过.name来获取:

print soup.nameprint soup.head.name

(3)、attrs一个tag可能有很多个属性,你可以使用如下两种方法获取。

tag['class']tag.attrs

如果你想获取一个标签的多值属性,你可以使用如下方法获取所有的p的class

print soup.p['class']# ["body", "strikeout"]

除了上面的方法,你还可以使用get方法获取

print soup.p.get('class')# ["body", "strikeout"]

修改tag的名称和属性

soup = BeautifulSoup('Extremely bold')tag = soup.btag.name = "blockquote"tag['class'] = 'verybold'tag['id'] = 1tag# 
Extremely bold
del tag['class']del tag['id']tag#
Extremely bold

今天就介绍Beautiful Soup哦,下次再更新PyQuery的用法

最后,小编分享一波2019最新的python全套教程最后小编为大家准备了6月份新出的python自学视频教程,共计415集,可以免费分享给大家!可加小编的学习群就能免费领取了:1084028245

python学习资料获取方式1.右上角点击关注

2.评论区任意评论或者转发一下

3.做完1、2步,然后私信我回复“资料”哦

2019Python自学教程全新升级为《Python+数据分析+机器学习》,九大阶段能力逐级提升,打造技能更全面的全栈工程师。

bc800ec296374d1e8e930161c55fb437
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值