获取完源代码可以做什么?——BeautifulSoup

python之BeautifulSoup 框架

介绍

BeautifulSoup 是 Python 的一个 HTML 或 XML 的解析库,我们可以用它来方便从网页中提取数据

安装

导入

使用

可以看出通过soup.prettify()方法对我们的字符串格式化,这样提高美观性,而且说明里面包含的库有利于我们提取内容。

匹配标签

结果为

可以看出只会匹配到第一个,且会匹配出包括标签的所有内容,那肯定还不够知足的。

string(s)

提取标签内的内容肯定是最重要的,其提供了一个 string(s) 方法。让我们看看怎么用。

输出结果是

由此看出 string 就是获取标签内的内容,strings 就是获取多个内容。

当内容仅有一个嵌套,依旧会获取那个嵌套里的内容。

当内容里还嵌套几个标签,就得用 strings,否则就会出错返回 None。

而且仅仅获取到的是第一个目标

如果想获取所有目标,就得用 find_all() 方法,之后会将。

直接子节点

输出为

可以看出 contents 属性是以列表方式输出,而 children 属性以列表迭代器输出,需要用 list 方式输出,不过两种方法都可以通过 list 输出。而且两者的功能是有点类似的。

父节点

输出为

通过 .parent 属性来获取某个元素的父节点

通过元素的. parents 属性可以递归得到元素的所有父辈节点

不能直接用 parents 属性,需要通过循环遍历输出

find_all 方法

结果为

以列表输出

find_all(name , attrs , recursive , text , **kwargs)

find_all 是爬虫常用的方法。

CSS 选择器

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

这个也是用得比较频繁的!

标签名

类名

id 号

组合查找

属性查找

注意:select 完之后获得的是列表,一般用方法来获取它的内容。

很好理解,就不贴代码演示了!

接下来终于到了真正的实战啦!!!

not end

-python 学习笔记 -

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181025G20LPY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券