一名前端工作人员的python爬虫实践记录【2】---BeautifulSoup

175 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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 库,用于从 HTMLXML 文件中提取数据。它与您最喜欢的解析器一起使用,提供导航、搜索和修改解析树的惯用方式。它通常可以节省程序员数小时或数天的工作时间。

我该怎么使用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">&nbsp;/&nbsp;The Shawshank Redemption</span>
                                <span class="other">&nbsp;/&nbsp;月黑高飞(港)  /  刺激1995(台)</span>
                        </a>


                            <span class="playable">[可播放]</span>
                    </div>
                    <div class="bd">
                        <p class="">
                            导演: 弗兰克·德拉邦特 Frank Darabont&nbsp;&nbsp;&nbsp;主演: 蒂姆·罗宾斯 Tim Robbins /...<br>
                            1994&nbsp;/&nbsp;美国&nbsp;/&nbsp;犯罪 剧情
                        </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进行匹配 和信息提取
安利常见的正则表达式的练习方法
敬请期待!

我是短袖撸码蒂尔尼
一名热爱阿森纳的前端工程师
如果本文对您有帮助,可以给一个免费的赞吗?谢谢!

名片.jpg