热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python爬虫07|有了BeautifulSoup,妈妈再也不用担心我的正则表达式了

我们上次做了你的第一个爬虫,爬取当当网Top500本五星好评书籍有些朋友觉得利用正则表达式去提取信息太特

我们上次做了

 

你的第一个爬虫,爬取当当网 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)
#"sister" href="http://example.com/1" id="link1">一个笑话长

 

获取所有超链接

 

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 没烦恼

 

 

 

 

 

 

 

好看的人都点了


推荐阅读
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
author-avatar
mobiledu2502907083
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有