bs4的简单介绍

1.bs4介绍

BS4全称是Beatiful Soup,它提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为tiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。

2.应用

#下载
pip install bs4
#使用步骤
from bs4 import BeautifulSoup
soup = BeatifulSoup(res.text,'lxml')
tag=soup.select("CSS选择器表达式")

其中,CSS选择器分为四种

(1)根据节点及节点层次关系定位标签:标签选择器和层次选择器

soup.select('title')
#单层选择器
soup.select('div > ul > li')
#多层选择器
soup.select('div > li')

(2)根据节点的class属性定位标签:class选择器

soup.select('.item')

(3)根据id属性定位标签:id选择器

soup.select('#item')

(4)嵌套选择

url_list = soup.select('url')
for url in url_list:
	print(url.select('li'))

3.作用

bs4:能够快速方便简单的提取网页中指定的内容,给我一个网页字符串,然后使用它的接口将网页字符串生成一个对象,然后通过这个对象的方法来提取数据。

lxml是一个解析器,也是下面的xpath要用到的库,bs4将网页字符串生成对象的时候需要用到解析器,就用lxml。

4.了解

Beautiful Soup库是解析、遍历、维护“标签树”的功能库。

BeautifulSoup对应一个HTML/XML文档的全部内容。

5.案例

#导入写入文件路径模块
import os
#导入请求模块
import requests
#导入库
from bs4 import BeautifulSoup
#请求路由
base_url = 'https://b.faloo.com/y_0_0_0_0_6_1_1.html'
#请求头
headers = {

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4385.0 Safari/537.36'

}
#实例化
res = requests.get(url=base_url, headers=headers)
#判断是否访问
if res.status_code == 200:
#初始化
    bs = BeautifulSoup(res.text, 'lxml')
#查询
    index = bs.select('.TwoBox02_08 > h1 > a')
#章节
    index_num = 1

    for i in index:

        base_url1 = 'https:' + i['href']

        res2 = requests.get(url=base_url1, headers=headers)

        bs1 = BeautifulSoup(res2.text, 'lxml')
#查询目录
        ml = bs1.select('.DivTd > a')
#目录名字
        ml_name = bs1.select('.muluh2 > h2')
#标题名字
        title_name = ml_name[0].get_text()
#创建文件
        os.makedirs(title_name)

        index_ml = 1

        for j in ml:
        
            base_url2 = 'https:' + j['href']

            res3 = requests.get(url=base_url2, headers=headers)

            bs2 = BeautifulSoup(res3.text, 'lxml')

            title = j.get_text()

            content = bs2.select('.noveContent')
#将内容写入文件
            with open(f'{title_name}/[{index_ml}]{title}', 'w', encoding='utf_8')as f:
                f.write(content[0].get_text())
                index_ml += 1
            index_num += 1

        print(f'--------已完成{index_num}章节---------')

else:

    print('error')

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值