首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python爬虫学习(六)BeautifulSoup来袭

在之前的实例中,我们都是用正则表达式来提取我们想要的信息,尤其是在上一节,我们可能写了一个比较长的正则表达式,那有没有更加方便的方式以供我们提取信息呢?当然,BeautifulSoup就是一个很好的工具。

牛刀小试

为了让大家对BeautifulSoup的方便有个感性的认识,直接上代码比较。以下是爬取豆瓣电影Top250的代码:

下面是使用BeautifulSoup的代码:

以下为运行结果:

可以清楚地看到,这碗“靓汤”果然挺好用的!

下面简单介绍一下BeautifulSoup的使用方法。

基本使用

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

安装

打开命令行工具,输入 即可安装。

安装解析器

BeautifulSoup除了支持Python标准库中的HTML解析器,还支持一些第三方的解析器。可以使用 命令安装。

如何使用

将一段文档传入BeautifulSoup 的构造方法,就能得到一个文档的对象, 可以传入一段字符串或一个文件句柄.如演示代码中的 。我们指定使用 解析器解析文档,Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构。

BeautifulSoup官方文档中有很多详细的资料,这里,只介绍一个搜索文档树的方法 和 。

find_all()

该方法搜索出符合过滤器条件的元素,查找到想要查找的文档内容。过滤器有很多种,逐一介绍:以爱丽丝文档作为例子,

字符串

最简单的过滤器是字符串.在搜索方法中传入一个字符串参数,Beautiful Soup会查找与字符串完整匹配的内容,下面的例子用于查找文档中所有的 标签:

正则表达式

如果传入正则表达式作为参数,Beautiful Soup会通过正则表达式的 来匹配内容.下面例子中找出所有以b开头的标签,这表示 和 标签都应该被找到:

列表

如果传入列表参数,Beautiful Soup会将与列表中任一元素匹配的内容返回.下面代码找到文档中所有 标签和 标签:

True

可以匹配任何值,下面代码查找到所有的tag,但是不会返回字符串

方法

如果没有合适过滤器,那么还可以定义一个方法,方法只接受一个元素参数 ,如果这个方法返回 表示当前元素匹配并且被找到,如果不是则反回

下面方法校验了当前元素,如果包含 属性却不包含 属性,那么将返回

将这个方法作为参数传入 方法,将得到所有 标签:

返回结果中只有 标签没有 标签,因为 标签还定义了”id”,没有返回 和 ,因为 和 中没有定义” ”属性.

CSS选择器

BeautifulSoup支持大部分的CSS选择器 , 在 Tag或 BeautifulSoup对象的 .select() 方法中传入字符串参数, 即可使用CSS选择器的语法找到tag:

通过tag标签逐层查找:

更多CSS选择器语法,查看http://www.w3school.com.cn/css/cssselectortype.asp。

以上内容只是官方文档中的一小部分内容,详情请查看:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/#

小技巧

选择 ,我们就把元素的CSS选择器复制下来了。

以上,衷心感谢大家的关注!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180228G0FZ5300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券