携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情
前文回顾
一名前端工作人员的python爬虫实践记录【1】——通过urllib封装请求
书接上文
上一篇文章了,我们已经成功对浏览器封装了请求,通过
response = urllib.request.urlopen(request)
html = response.read().decode("utf-8")
咱们成功获取到了服务器返回的response,获取到了解码后的response(html)
以豆瓣电影top250为例
html(精简后)如下:
可见 这就是一个html 文件,那接下来就轮到了代码解析的环节了。 目前这么多的内容,怎样才能既反保守又反冒进,多快好省地获取到我们想要的信息呢?
这就得介绍今天本文的主角——BeautifulSoup了
BeautifulSoup
什么是BeautifulSoup?
Beautiful Soup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。它与您最喜欢的解析器一起使用,提供导航、搜索和修改解析树的惯用方式。它通常可以节省程序员数小时或数天的工作时间。
我该怎么使用BeautifulSoup 捏
可以看文档===>文档点我
又或者可以看我
首先是在项目里面导入:
from bs4 import BeautifulSoup
然后是创建一个BeautifulSoup的实例对象
bs = BeautifulSoup(html, "html.parser")
BeautifulSoup的常用方法如下:
# 直接读取标签(第一个找到的标签)
print(bs.a)
# <a class="nav-login" href="https://accounts.douban.com/passport/login?
# source=movie" rel="nofollow">登录/注册</a>
# 读取标签内容 innerhtml
print(bs.a.string)
# 登录/注册
而为了能获取我们想要的信息,我们需要对整个的html文档结构进行解析:
<li>
<div class="item">
<div class="pic">
<em class="">1</em>
<a href="https://movie.douban.com/subject/1292052/">
<img width="100" alt="肖申克的救赎" src="https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg" class="">
</a>
</div>
<div class="info">
<div class="hd">
<a href="https://movie.douban.com/subject/1292052/" class="">
<span class="title">肖申克的救赎</span>
<span class="title"> / The Shawshank Redemption</span>
<span class="other"> / 月黑高飞(港) / 刺激1995(台)</span>
</a>
<span class="playable">[可播放]</span>
</div>
<div class="bd">
<p class="">
导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...<br>
1994 / 美国 / 犯罪 剧情
</p>
<div class="star">
<span class="rating5-t"></span>
<span class="rating_num" property="v:average">9.7</span>
<span property="v:best" content="10.0"></span>
<span>2664126人评价</span>
</div>
<p class="quote">
<span class="inq">希望让人自由。</span>
</p>
</div>
</div>
</div>
</li>
由此可见,在数据渲染中,只要我们定位到class='item' 我们便可以获取到具体的电影信息,那为了配合BeautifulSoup的使用,咱们得使用一种常见的方法去匹配对应的代码段,那就是怎样的方法,能够在这茫茫多的代码之中,如狡兔一般迅捷,如猎鹰一般精准地锁定目标,成功匹配呢?
没错,相信聪明的你已经想到了,那就是正则表达式!!
下期预告
使用正则表达式结合BeautifulSoup 对html进行匹配 和信息提取
安利常见的正则表达式的练习方法
敬请期待!
我是短袖撸码蒂尔尼
一名热爱阿森纳的前端工程师
如果本文对您有帮助,可以给一个免费的赞吗?谢谢!