BeautifuSoup相关知识点

35 阅读1分钟

BeautifuSoup的作用是爬取网页时可以用来解析html页面,获取想要的信息

下载方式

pip install bs4 (4代表版本,下哪个版本根据python的版本来)

如何使用

<table class="tablelist" cellspacing="0" cellpadding="0">
    <tbody>
        <tr class="h">
            <td class="1" width="374">职位名称</td>
            <td>职位类别</td>
            <td>人数</td>
            <td>地点</td>
            <td>发布时间</td>
        </tr>
        <tr class="even">
            <td class="l"><a href="https://www.baidu.com">区块链高级研发工程师</a></td>
            <td class="l">技术类</td>
            <td class="l">1</td>
            <td class="l">深圳</td>
            <td class="l">2018-11-25</td>
        </tr>
        <tr class="even">
            <td><a href="https://www.qq.com">金融云高级后台开发</a></td>
            <td>技术类</td>
            <td>2</td>
            <td>深圳</td>
            <td>2018-11-24</td>
        </tr>
        <tr>
            <td><a href="https://www.juran.com">高级研发工程师</a></td>
            <td>技术类</td>
            <td>2</td>
            <td>深圳</td>
            <td>2018-11-24</td>
        </tr>
        <tr>
            <td><a href="https://www.python.com">高级图像算法工程师</a></td>
            <td>技术类</td>
            <td>2</td>
            <td>深圳</td>
            <td>2018-11-24</td>
        </tr>
        <tr>
            <td><a href="https://www.lg.com" id="test" class="test">高级业务运维工程师</a></td>
            <td>技术类</td>
            <td>2</td>
            <td>深圳</td>
            <td>2018-11-24</td>
        </tr>
    </tbody>
</table>

一、创建Beautiful Soup对象

``` beautiful_soup = BeautifulSoup(从网页爬取下来的需要解析的html代码, 解析方式) ```

其中解析方式有"lxml","lxml-xml", "html.parser", "html5lib"

二、查询需要的节点信息

tr_tup = beautifulsoup.find('tr',attrs={})

tr是要查找的节点,attrs是字典类型,里面是要查找节点的属性,返回的参数是一个list

注:find和findall区别是一个是只查找一个匹配节点,另一个是查找所有匹配节点

三、遍历节点

for tr in trs:
    # print(tr)
    # tds = tr.find_all('td')
    # print(tds)
    # title = tds[0]
    # print(title.string)

    # 获取tr标签的所有文本
    # infos = list(tr.strings)
    # print(infos)

    # 可以去除空格取纯文本
    # infos = list(tr.stripped_strings)
    # print(infos[0])

其中list(tr.stripped_string)可以获取节点里所有的text内容并返回一个list