好文档 - 专业文书写作范文服务资料分享网站

黑马程序员python基础班教程笔记:使

天下 分享 时间: 加入收藏 我要投稿 点赞

使? Beautiful Soup 解析数据

有的?伙伴们对写正则表达式的写法?得不熟练,没关系,我们还有?个更 强?的?具,叫Beautiful Soup,有了它我们可以很?便地提取出HTML或 XML标签中的内容,实在是?便,这?节就让我们?起来感受?下Beautiful Soup的魅?

1. Beautiful Soup的简介

简单来说,Beautiful Soup是python的?个库,最主要的功能是从??抓取数 据。官?解释如下:

Beautiful Soup提供?些简单的、python式的函数?来处理导航、搜 索、修改分析树等功能。它是?个?具箱,通过解析?档为?户提供需 要抓取的数据,因为简单,所以不需要多少代码就可以写出?个完整的 应?程序。 Beautiful Soup?动将输??档转换为Unicode编码,输出 ?档转换为utf-8编码。你不需要考虑编码?式,除??档没有指定?个 编码?式,这时,Beautiful Soup就不能?动识别编码?式了。然后, 你仅仅需要说明?下原始编码?式就可以了。 Beautiful Soup已成为和 lxml、html6lib?样出?的python解释器,为?户灵活地提供不同的解 析策略或强劲的速度。 2. 安装

下载地址: https://pypi.python.org/pypi/beautifulsoup4/4.3.2 官??档: http://beautifulsoup.readthedocs.org/zh_CN/latest

3. 使?

from bs4 import BeautifulSoup

我们创建?个字符串,后?的例?我们便会?它来演示

创建 beautifulsoup 对象

soup = BeautifulSoup(html)

下?我们来打印?下 soup 对象的内容,格式化输出 print soup.prettify()

3.1 找标签

我们可以利? soup加标签名轻松地获取这些标签的内容,是不是感觉?正则 表达式?便多了?不过有?点是,它查找的是在所有内容中的第?个符合要 求的标签

对于标签,它有两个重要的属性,是 name 和 attrs,下?我们分别来感受? 下

soup 对象本身?较特殊,它的 name 即为 [document],对于其他内部标 签,输出的值便为标签本身的名称

在这?,我们把 p 标签的所有属性打印输出了出来,得到的类型是?个字 典。

如果我们想要单独获取某个属性,可以这样,例如我们获取它的 class 叫什 么

3.2 获取?字

既然我们已经得到了标签的内容,那么问题来了,我们要想获取标签内部的 ?字怎么办呢?很简单,? .string 即可,例如 print soup.p.string #The Dormouse's story

3.3 CSS选择器

在CSS中,标签名不加任何修饰,类名前加点,id名前加 #,在这?我们也 可以利?类似的?法来筛选元素,?到的?法是 soup.select(),返回类型是 list

3.3.1 通过标签名查找

print soup.select('title')

#[The Dormouse's story] 3.3.2 通过类名查找

print soup.select('.sister')

#[,

href=\3.3.3 通过 id 名查找

print soup.select('#link1')

#[] 3.3.4 组合查找

组合查找即和写 class ?件时,标签名与类名、id名进?的组合原理是?样 的,例如查找 p 标签中,id 等于 link1的内容,?者需要?空格分开 print soup.select('p #link1')

#[]

3.3.5 直接?标签查找

print soup.select(\

#[The Dormouse's story] 3.3.6 属性查找

查找时还可以加?属性元素,属性需要?中括号括起来,注意属性和标签属 于同?节点,所以中间不能加空格,否则会?法匹配到。

同样,属性仍然可以与上述查找?式组合,不在同?节点的空格隔开,同? 节点的不加空格

print soup.select('p a[href=\

#[]

以上的 select ?法返回的结果都是列表形式,可以遍历形式输出,然后? get_text() ?法来获取它的内容。

soup = BeautifulSoup(html, 'lxml') print type(soup.select('title'))

print soup.select('title')[0].get_text() for title in soup.select('title'): print title.get_text()

黑马程序员python基础班教程笔记:使

使?BeautifulSoup解析数据有的?伙伴们对写正则表达式的写法?得不熟练,没关系,我们还有?个更强?的?具,叫BeautifulSoup,有了它我们可以很?便地提取出HTML或XML标签中的内容,实在是?便,这?节就让我们?起来感受?下BeautifulSoup的魅?1.BeautifulSoup的简介
推荐度:
点击下载文档文档为doc格式
60zww27m856zh7s4eqk6667gj1yjqg01cho
领取福利

微信扫码领取福利

微信扫码分享