Beautifulsoup的简单使用(上)

1、biadu.html的获取,这个以后有机会再介绍,我们这里放出源码,不为了别的,就为了让我的文章多几个字(滑稽)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link href="https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css" />
    <title>百度一下,你就知道</title>
</head>
<body link="#0000cc">
    <div id="wrapper">
        <div id="head">
            <div class="head_wrapper">
                <div id="u1">
                    <a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
                    <a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
                    <a class="mnav" href="http://www.hao123.com" name="tj_trhao123">hao123</a>
                    <a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>
                    <a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>
                    <a class="mnav" href="http://tieba.baidu.com" name="tj_trtieba">贴吧</a>
                    <a class="bri" href="http://news.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>


                </div>
            </div>
        </div>

    </div>

</body>
</html>

以上就是我们baidu.html的源码,给一个我在过程中遇到的问题及解决方法,在我第一次运行代码的时候,由于我html文件的位置放置错误导致我的代码报错,解决方法到也简单,就是把这两个文件放在同一个文件夹下

2、实操开始

file = open("./baidu.html", "rb")
html = file.read().decode("utf-8")
bs = BeautifulSoup(html, "html.parser")

我们逐一对这三行代码进行解析

第一行,用到了python中的读写文件操作中的读操作,"rb"读操作:在读取非文本文件的时候,比如读取MP3、图像、视频信息的时候就需要用到rb,因为这种数据是没办法直接显示出来的,那么我们第一行是创建了个file,以只读模式打开了baidu.html这个文件

第二行,创建了个html,依旧是读操作,以全部读的模式打开了第一行创建的file,并且以“utf-8”的模式解码

第三行,创建了个bs,这个后面会经常用到,Beautifulsoup中的parser 模块为 Python 的内部解析器和字节码编译器提供了一个接口。 此接口的主要目的是允许 Python 代码编辑 Python 表达式的解析树并从中创建可执行代码,说人话就是你可以用它来进行一些简单的编辑,可以看到最后它是被赋值给了bs,这个后面也会经常用到

既然拿到了我们想要的东西,那么我们就可以对其进行操作

(1)

第一个

print(bs.title)

运行结果

D:\program\python\python\python.exe "D:/program/python/douban/test/test Bs4.py"
<title>百度一下,你就知道</title>


进程已结束,退出代码0

可以看到,将获取到的bs中的title打印出来,看到的是所有的title,包括文字和英文

第二个

print(bs.a)
print(bs.head)

结果

D:\program\python\python\python.exe "D:/program/python/douban/test/test Bs4.py"
<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<head>
<meta charset="utf-8"/>
<link href="https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css"/>
<title>百度一下,你就知道</title>
</head>


进程已结束,退出代码0

可以看到,第一个语句打印出来的是全部有关“a”的东西,第二个语句则是从第一个head的头部打印到尾部,注意是第一个,从头到尾

写到这里,可以简单总结下了,以上这些是对baidu.html这个文件的简单搜索操作,具体搜索方式为,bs.xxxx,即可进行搜索操作,通过print打印出来即可

(2)tag,标签及其内容,拿到它所找到的第一个内容

print(bs.title.string) 

来看效果

D:\program\python\python\python.exe "D:/program/python/douban/test/test Bs4.py"
百度一下,你就知道


进程已结束,退出代码0

输出的结果没有了“<title>百度一下,你就知道<titlle>”   中的“ <title> ”,这个东西被叫做标签,可以看到,bs.title.string是获取到了该标签中的字符串

那么,我们可以理解为

print(bs.title)   有标签,有内容

我们把这个字符串的属性打印出来看一下

print(type(bs.title.string))

得到结果

D:\program\python\python\python.exe "D:/program/python/douban/test/test Bs4.py"
<class 'bs4.element.NavigableString'>


进程已结束,退出代码0

可以看到,他的类中出现了NavigableString这个类型,下面我们来介绍它

(3)NavigableString

在计算机看来,baidu.html这个文件的每一行最后,都是有“\n”的,当然,我们是看不见的,在我们得到的bs中,我们已经用BeautifuSoup遍历了一遍,在BS4中,我们在html中看到的换行符以及空格都是NavigableString,也就是文本节点。

(4)获取a标签的所有属性,返回一个字典

print(bs.a.attrs) 

得到结果

D:\program\python\python\python.exe "D:/program/python/douban/test/test Bs4.py"
{'class': ['mnav'], 'href': 'http://news.baidu.com', 'name': 'tj_trnews'}


进程已结束,退出代码0

 标题所示的操作通过print(bs.a.atters)这行代码完成

我们在1的第二个中已经通过print(bs.a)将与a有关的东西打印了出来,而上面这一行代码返回a标签的所有属性,以字典的形式打印出来,这里重新放一下

<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>

对应过来就是各自的属性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值