python bs4 BeautifulSoup用法

上一篇文章讲了一些xpath的基本用法,现在来介绍一下bs4,bs4也是一个第三方库 需要引入,bs4是 第三方库  和xpath作用一样,都是用来解析html数据,相比之下,xpath的速度会快一点,xpath底层是用c来实现的

引入语法:

from bs4 import BeautifulSoup

1.bs4的简单的语法,不多说,直接上代码:

本地创建一个html文件index.html内容如下

<!DOCTYPE html>
<!--html标签称之为根标签-->
<html lang="en">
<!--头-->
<head>
    <meta charset="UTF-8">
    <title>美食杰</title>
</head>
<!--身体-->
<body>
    <!--ul列表-->
    <ul>
        <!--li单元格-->
        <li>啤酒</li>
        <li>饮料</li>
        <li>矿泉水</li>
        <li>
            <!--a标签 超链接标签-->
            <!--href 为超链接属性-->
            <a class="bd net" id="baidu" href="https://www.baidu.com">百度</a>
        </li>
        <li>
            <a id="jd" class="shopping" href="https://www.jd.com">京东</a>
        </li>
        <li>
            <a class="shopping" href="https://www.taobao.com">淘宝</a>
        </li>
    </ul>
    <p class="first">first_people</p>
    <p class="first" id="one">first_id</p>
    <p class="first seconde" id="two">seconde_class</p>
    <div class="now">
        first_div_element
        <p class="third">third</p>
        <a href="https://www.meishij.net">美食杰</a>

    </div>
</body>
</html>

使用bs4 爬取创建的html文件 获取其中的内容

from bs4 import BeautifulSoup

# BeautifulSoup 里面需要两个参数
# 一个为open方法 一个为固定写法'lxml'
# open 方法里面需要两个参数
# 1.想要解析的数据
# 2.设置编码格式
bs = BeautifulSoup(open('index.html',encoding='utf-8'),'lxml')
print(bs)
print(type(bs))
# 获取网页当中的title标签
print(bs.title)
# 获取head标签及head标签内部的所有其他标签
print(bs.head)
# 获取网页当中的第一个a标签
print(bs.a)
# 总结:bs.XX
# 获取所有XX当中的第一个XX以及第一个XX当中的内容
print(bs.name)
# name在此指的是获取当前内容的标签名 bs为一个整体而不是某一个具体的标签
# document文档
# 获取head的标签名
print(bs.head.name)
# attrs
# attribute 属性
# 获取标签的所有属性
# 如果没有做特别处理,bs.XX永远获取的是所有XX中的第一个XX
print(bs.a.attrs)
print(bs.a['id'])
print(bs.a['href'])
# class和id不一样
# id必须是唯一的 一个标签只能有一个id
# class不是唯一的不同标签可以拥有同一个class
# 同一个标签也可以拥有多个class
print(bs.a['class'])
# delete删除
print(bs.a)
del bs.a['id']
print(bs.a)
# 获取指定标签的文本内容
print(bs.a.string)
# string获取的文本指的是本标签的文本
# 不包含子标签的文本
print(bs.div.string)
# contents能够获取指定标签下面的所有内容
print(bs.head.contents)
print(bs.body.contents)
# 获取所有内容当中指定索引的内容
print(bs.div.contents[1])

2.bs4 简单的爬虫例子,爬取百度新闻,获取标题和链接,这里我用的是谷歌浏览器,右键检查

# 引入requests 和 BeautifulSoup模块
import requests
from bs4 import BeautifulSoup
url =  'http://news.baidu.com/'
# 请求网页获取源码
response = requests.get(url)
# print(response)
# 将源码转化成一个 BeautifulSoup对象 解析源码
bs4_soup  = BeautifulSoup(response.content,'lxml')
# print(bs4_soup)
# 使用 BeautifulSoup对象的select方法查找
new_list = bs4_soup.select('ul.focuslistnews li a')
# 返回值是一个列表
print(new_list)
for news in new_list:
    # 获取href属性
    href = news.get('href')
    # get_text()获取标签的文本
    text = news.get_text()
    print(text,href)

注意:在bs4中#表示id,点. 表示类名,以上就是bs4的一些简单的用法。

猜你喜欢

转载自blog.csdn.net/qq_42603652/article/details/81292270