我们上次做了

你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍

有些朋友觉得

利用正则表达式去提取信息

太特么麻烦了

有没有什么别的方式

更方便过滤我们想要的内容啊

emmmm

你还别说

还真有

有一个高效的网页解析库

它的名字叫做

BeautifulSoup

那可是

 

 

是一个可以从 HTML 或 XML 文件中提取数据的 Python 库

那么这么玩呢

...

接下来就是

学习python的正确姿势

 

 

 

首先我们要安装一下这个库

pip install beautifulsoup4

beautifulsoup支持不同的解析器

比如

对 HTML 的解析

对 XML 的解析

对 HTML5 的解析

你看

一般情况下

我们用的比较多的是 lxml 解析器

我们先来使用一个例子

让你体验一下

beautifulsoup 的一些常用的方法

可流弊了呢

比如我们有这样一段 HTML 代码

html_doc = """

<html><head><title>学习python的正确姿势</title></head>
<body>
<p class="title"><b>小帅b的故事</b></p> <p class="story">有一天,小帅b想给大家讲两个笑话
<a href="http://example.com/1" class="sister" id="link1">一个笑话长</a>,
<a href="http://example.com/2" class="sister" id="link2">一个笑话短</a> ,
他问大家,想听长的还是短的?</p> <p class="story">...</p> """

在不使用 re 来进行正则表达式的情况下

如何快速获取到我们想要的内容呢?

先安装一下

pip install beautifulsoup4

pip install lxml

接着将 html 的源代码传给 BeautifulSoup

soup = BeautifulSoup(html_doc,'lxml')

此时此刻

就不需要自己写正则匹配了

我们要做的就是从这个对象直接获取我们要的内容

获取标题的内容

print(soup.title.string)
#学习python的正确姿势

获取 p 标签里面的内容

print(soup.p.string)
#小帅b的故事

获取 title 的父级标签

print(soup.title.parent.name)
#head

获取超链接

print(soup.a)
#<a class="sister" href="http://example.com/1" id="link1">一个笑话长</a>

获取所有超链接

print(soup.find_all('a'))
#[<a class="sister" href="http://example.com/1" id="link1">一个笑话长</a>, <a class="sister" href="http://example.com/2" id="link2">一个笑话短</a>]

获取 id 为 link2 的超链接

print(soup.find(id="link2"))
#<a class="sister" href="http://example.com/2" id="link2">一个笑话短</a>

获取网页中所有的内容

print(soup.get_text())

# 学习python的正确姿势

小帅b的故事
有一天,小帅b想给大家讲两个笑话
一个笑话长,
一个笑话短 ,
他问大家,想听长的还是短的?
...

除了find方法之外

如果你对css比较熟悉

也可以使用 select 方法

soup = BeautifulSoup(html_doc,'lxml')

print(soup.select("title"))
print(soup.select("body a"))
print(soup.select("p > #link1"))

以上就是 BeautifulSoup 常用的方法

想进一步了解可以到这

https://www.crummy.com/software/BeautifulSoup/bs4/doc/

有了它

妈妈再也不用担心我的正则表达式了

下次还有人这样问你

年轻人,不会正则表达式你睡得着觉?有点出息没有?

你可以傲娇的告诉他

睡得着

本篇完

再见

近期文章

python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍

python爬虫05 | 年轻人,不会正则表达式你睡得着觉?有点出息没有?

python爬虫04 | 长江后浪推前浪,Reuqests库把urllib库拍在沙滩上

扫一扫

学习 Python 没烦恼

 

好看的人都点了

最新文章

  1. iOS开发之Masonry框架源码深度解析
  2. ASP.NET Core 中文文档 第二章 指南(4.4)添加 Model
  3. shiro登陆后没有返回设置的successUrl?
  4. iOS - 系统提醒短音频
  5. Eclipse: How to Navigating Java call stack in Eclipse
  6. Android开发eclipse运行程序时报timeout的解决方法
  7. FileUpload之FileItem
  8. 【Shell脚本学习4】几种常见的Shell
  9. 解决IE6下固定定位问题 使用position:fixed
  10. com.opensymphony.xwork2.ActionSupport类源码
  11. Android 框架修炼-自己封装双缓存管理框架库
  12. 从IT的角度思考BIM(三):敏捷开发
  13. mac xmind快捷键
  14. swift 可选类型笔记
  15. vue组件递归
  16. 【编程技巧】NSDate,NSDateFormatter,NSTimeInterval
  17. vue下拉列表
  18. ASP.NET CORE系列【三】使用Entity Framework Core进行增删改查
  19. 获取request参数的工具类
  20. es6的理解

热门文章

  1. Zepto Code Rush 2014-A. Feed with Candy(HACK)
  2. 安装Office Web Apps Server 2013 &ndash; KB2592525安装失败
  3. 在win10 64 bit上安装theano
  4. URAL 1601. AntiCAPS (strings)
  5. JSONObject.toBean() data转换
  6. oc48--多个对象内存管理练习
  7. 海思3518e mpp2/sample/venc makefile简析
  8. 第3课 把文件存入Git文档库
  9. Network Saboteur(dfs)
  10. 正确的缩写document。querySelector