python爬虫---用数据解析bs4爬取整部三国演义(不用诗词名句网)

2023-10-26

python爬虫—用数据解析bs4爬取整部三国演义(不用诗词名句网)

需求:使用bs4实现将三国演义小说的每一章的内容爬取到本地磁盘进行存储

诗词名句网无法进去,所以我自己找了个网站爬取,思路差不多。

首先,对首页的页面数据进行爬取

url = 'http://sanguo.5000yan.com/baihuawen/'
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
    }
page_text=requests.get(url=url,headers=headers).text

请注意这里的headers,就是UA伪装
在这里插入图片描述
然后开始解析这个标题

 	soup=BeautifulSoup(page_text,'lxml')
    #解析章节标题
    li_list=soup.select('.list > ul > li > a')
    #print(li_list)
    fp = open('./sanguo.txt','w',encoding='utf-8')#为后续存储到本地磁盘做准备
    for a in li_list:
        title=a.string
        detail_url ='http://sanguo.5000yan.com/' + a['href']
         #对详情页发起请求,解析出章节内容
        detail_page_text = requests.get(url=detail_url,headers=headers).text

在这里插入图片描述为什么soup.select(’.list > ul > li > a’)可见图中所画,
同时我们会得到新的url,即detail_url =‘http://sanguo.5000yan.com/’ + a[‘href’]
然后我们解析出每章的内容,

		detail_soup = BeautifulSoup(detail_page_text,'lxml')
        div_tag = detail_soup.find('div',class_='grap')
        #解析到了章节的内容
        content = div_tag.text

在这里插入图片描述

最后存储到本地磁盘中

 		fp.write(title+':'+content+'\n')
        print(title,'爬取成功')

如果就这样结束,你们爬取出来的代码会是乱码的,这里需要在响应数据下面加上以下两段代码:

page_text=page_text.encode("ISO-8859-1")
page_text=page_text.decode('utf-8')

完整的代码如下:

import lxml
import requests
from bs4 import BeautifulSoup
if __name__=='__main__':
    #对首页的页面数据进行爬取
    url = 'http://sanguo.5000yan.com/baihuawen/'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
    }
    page_text=requests.get(url=url,headers=headers).text
    page_text=page_text.encode("ISO-8859-1")
    page_text=page_text.decode('utf-8')
    #在首页中解析出章节的标题和详情页的url
    #实例化BeautifulSoup对象,需要将页面源码数据加载到该对象中
    soup=BeautifulSoup(page_text,'lxml')
    #解析章节标题
    li_list=soup.select('.list > ul > li > a')
    #print(li_list)
    fp = open('./sanguo.txt','w',encoding='utf-8')
    for a in li_list:
        title=a.string
        detail_url ='http://sanguo.5000yan.com/' + a['href']
        #对详情页发起请求,解析出章节内容
        detail_page_text = requests.get(url=detail_url,headers=headers).text
        detail_page_text=detail_page_text.encode("ISO-8859-1")
        detail_page_text=detail_page_text.decode('utf-8')
        #解析出详情页中相关的章节内容
        detail_soup = BeautifulSoup(detail_page_text,'lxml')
        div_tag = detail_soup.find('div',class_='grap')
        #解析到了章节的内容
        content = div_tag.text
        fp.write(title+':'+content+'\n')
        print(title,'爬取成功')







本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python爬虫---用数据解析bs4爬取整部三国演义(不用诗词名句网) 的相关文章

随机推荐

  • python/元组、列表、字典

    Python 的元组与列表类似 不同之处在于元组的元素不能修改 元组使用小括号 列表使用方括号 字典使用 下面用一个实例来体验一下 s list input r 创建一个字典 for i in s r i r get i 0 1 看下文解释
  • 引爆点--读书有感

    有个理念一直在我心里 都说流行都是轮回 如何去让产品抓住流行趋势 究竟是什么造就了流行 如何去学习 看看周围的世界吧 它看上去似乎雷打不动 无法改变 但只要你找准位置 轻轻一触 它就可能倾斜 书籍理念 个别人物法则 附着力因素法则和环境威力
  • 单片机控制直流电机(风扇)电路详解

    单片机引脚为什么无法直接控制电机或风扇 我们在使用单片机去控制 5V的直流电机或者散热风扇时 可能会有一种疑惑 51单片机的引脚电压为 5V 为什么不直接用单片机引脚去驱动电机或者风扇 实际上单片机的控制引脚 不管是51单片机或者stm32
  • Linux安装python显示“软件包python没有可安装候选”

    在Linux中安装python时 调用 sudo apt get install python 命令出现以下问题 sudo apt get install python sudo lyx 的密码 正在读取软件包列表 完成 正在分析软件包的依
  • java中public/private/protected的具体区别

    java中public private protected的具体区别 public public表明该数据成员 成员函数是对所有用户开放的 所有用户都可以直接进行调用 private private表示私有 私有的意思就是除了class自己
  • 深度学习——更深层次的神经网络

    一个深层次的CNN网络结构 这里使用的卷积层全都是3 3的小型滤波器 特点是随着层的加深 通道数变大 卷积层的通道数从前面的层开始按顺序以16 16 32 32 64 64的方式增加 此外 插入了池化层 以逐渐减小中间数据的空间大小 并且
  • C++ 字符串

    C 提供了以下两种类型的字符串表示形式 C 风格字符串 C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言 并在 C 中继续得到支持 字符串实际上是使用 null 字符 0 终止的一维字符数组 因此 一个以
  • OpenMV的单颜色识别讲解

    OpenMV的官方教程 寻找色块 single color rgb565 blob tracking示例讲解 视频讲解 需要提前看的文章 程序烧录 颜色阈值设置 目录 threshold index和thresholds解析 固定代码部分
  • Vue记住滚动条位置 scrollBehavior + debounce

    Vue记住滚动条位置 1 先给占位符加一层缓存 2 在路由上加一个源信息meta 记录滚动条的top值 3 使用 scrollBehavior 4 给页面添加事件监听 使用前端路由 当切换到新路由时 想要页面滚到顶部 或者是保持原先的滚动位
  • 浅谈 js运行机制 、宏观任务、微观任务

    今天我们谈一下我对js 运行机制 和宏观任务 微观任务的理解 js运行机制有同步运行和异步运行 js是单线程运行模式在进入任务当中如果是同步任务 那么就直接被主线程运行 如果是异步任务 那么就进入任务队列中进行等待运行 直到主线程任务执行完
  • 二叉树基础

    文章目录 一 树的基础 1 树的概念 2 非树 3 树的相关概念 image 20220402143804166 https img blog csdnimg cn img convert a8bbb6f8483be3ca9edd9e354
  • 虚假人脸检测实验

    虚假人脸检测实验 虚假人脸识别 数据集链接 链接 https pan baidu com s 1ZY7 PqPGsxCBFerpfRW13Q pwd 0w2r 或者https download csdn net download weixi
  • 关于Windows Mobile手机视听电脑视音频的程序实现(一)

    心情不好 突然想写博客了 嘿嘿 其实这一个程序是差不多一年前实现的 那时正好着手一个项目 同时后来也因为这一个项目买了一款多普达手机 呵呵 这一个项目大概实现这么一个功能 电脑 服务器端 安装一个用于抓取摄像头与麦克风的数据 Windows
  • Qt元对象系统

    元对象系统 Meta Object System 元对象系统是一个基于标准C 的扩展 为Qt提供了信号与槽机制 实时类型信息 动态属性系统 元对象系统的三个基本条件 类必须继承自QObject 类声明Q OBJECT宏 默认私有有 元对象编
  • 如何解决幻读?

    一 什么是幻读 幻读 一个事务按相同的查询条件重新读取以前的检索过的数据 却发现其他事务插入了满足其条件查询的新数据 这种现象被成为幻读 进行了读取 分别读取了不同的数据 重点在于新增 insert 针对多笔数据 举个例子 事务A对数据进行
  • python机器人编程——无人机python联动控制实现(VREP仿真)1——手搓一个类ROS机器人消息订阅发布模块

    目录 一 前言 二 总体设想 三 系统的组成 四 python代码构建 构建一个MessageBroker消息代理类 以下这个是常规的MessageBroker类 以下这个是引入协程的MessageBroker类 下面是使用MessageB
  • uni-app插件使用注意事项

    1 将插件设置为全局组件后需要将项目重新运行 2 有些插件的功能会互斥 不要贪多全部装上 按需安装即可
  • QT中QMap使用实例详解

    QMap QMultiMap属于关联式容器 其底层结构是通过二叉树实现 故其查找value的效率很快 QMap中的数据都是成对出现的 第一个称为key 键 第二个称value 键值 目录 实例化QMap对象 插入数据 移除数据 遍历数据 由
  • siege压力测试工具安装和介绍

    前言 最近公司有个项目需要做一个短轮询类推送服务器 推送服务器分为三种 短轮询 长轮询 长连接 用户量不大 但是为了保险起见还是做一下压力测试 用的工具是siege 目录 前言 目录 siege介绍 siege安装 siege使用 1 si
  • python爬虫---用数据解析bs4爬取整部三国演义(不用诗词名句网)

    python爬虫 用数据解析bs4爬取整部三国演义 不用诗词名句网 需求 使用bs4实现将三国演义小说的每一章的内容爬取到本地磁盘进行存储 诗词名句网无法进去 所以我自己找了个网站爬取 思路差不多 首先 对首页的页面数据进行爬取 url h