Python爬虫三国演义

2023-11-17

爬取三国全篇内容

定位目标:https://www.shicimingju.com/book/sanguoyanyi.html

在这里插入代码片import requests
from bs4 import BeautifulSoup
f=open('./sanguo.txt','w',encoding='utf-8')#文件保存在当前文件夹中
headers={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"
}
url="https://www.shicimingju.com/book/sanguoyanyi.html"
page_text=requests.get(url=url,headers=headers).text
#数据解析,标题,详情页的url,章节内容
soup=BeautifulSoup(page_text,'lxml')  #实例化soup对象
#可以通过层级选择器定位
a_list=soup.select('.book-mulu>ul>li>a')

for a in a_list:
    title=a.string
    detail_url='https://www.shicimingju.com'+a['href']
    #对详情页发出url请求,解析出章节内容
    page_text_detail=requests.get(url=detail_url,headers=headers).text
   #注意不能使用上面已经实例化好的soup解析,需要重新实例化新的页面的soup
    soup=BeautifulSoup(page_text_detail,'lxml')
#     detail_list=soup.select('.chapter_content>p')
#     print(detail_list)
    div_tag=soup.find('div',class_='chapter_content')
    content=div_tag.text
    f.write(title+":"+content+"\n")
    print(title+" 下载成功!!")
f.close()    

运行结果如下:
第一回·宴桃园豪杰三结义 斩黄巾英雄首立功 下载成功!!
第二回·张翼德怒鞭督邮 何国舅谋诛宦竖 下载成功!!
第三回·议温明董卓叱丁原 馈金珠李肃说吕布 下载成功!!
第四回·废汉帝陈留践位 谋董贼孟德献刀 下载成功!!
第五回·发矫诏诸镇应曹公 破关兵三英战吕布 下载成功!!
第六回·焚金阙董卓行凶 匿玉玺孙坚背约 下载成功!!

此时,sanguo.txt中就有如下内容

第一回·宴桃园豪杰三结义 斩黄巾英雄首立功:

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。    白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。
——调寄《临江仙》 
........

运行过程还可能会出现以下错误:

ConnectionError: HTTPSConnectionPool(host=‘www.shicimingju.com’,
port=443): Max retries exceeded with url: /book/sanguoyanyi/44.html
(Caused by NewConnectionError(’<urllib3.connection.HTTPSConnection
object at 0x000001D2E2393BC8>: Failed to establish a new connection:
[WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。’))

总之,使用Python使用不到30行的代码就可以爬取一些小说资源了!

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

Python爬虫三国演义 的相关文章

随机推荐

  • iframe的替代品

    面试题 使用过iframe框架 那你对于iframe框架的优缺点知道多少 并且由于iframe的一些缺点 国内外针对这个框架的替代品你知道有哪些呢 知识点1 iframe框架的优缺点 优点 1 可以跨域请求其他网站 并将网站完整展示出来 2
  • [课程复习] 数据结构之线性表、树、图、查找、排序经典算法复习

    作者最近在复习考博 乘此机会分享一些计算机科学与技术 软件工程等相关专业课程考题 一方面分享给考研 考博 找工作的博友 另一方面也是自己今后完成这些课程的复习资料 同时也是在线笔记 基础知识 希望对您有所帮助 不喜勿喷 无知 乐观 低调 谦
  • 【Qt Modbus通信】QModbus实现modbus的主机功能 源码分享

    前言 modbus在上下位机数据交互时被广泛使用 因此写了这篇笔记和大家一起学习 Qt Modbus通信 libmodbus实现modbus的主机功能 从机功能 源码分享 之前使用libmodbus实现了modbus的主从功能 但发现主机查
  • docker frp 搭建内网穿透

    docker frp 搭建内网穿透 可运行的云服务器 docker pull snowdreamtech frps mkdir p root docker frp cd root docker frp touch frps ini comm
  • 企业微信如何简单实现定时发送文件到群:企业微信群机器人操作(Java代码实现)

    前言 不知道小伙伴们的公司组织架构通勤用的啥软件 我公司用的企业微信 然后业务销售部那边需要每天统计销售数据报表然后发在群里 我是开发 我不配在群里 知道这个背景以后 产品给我们的需求是 直接统计数据按照业务那边的报表模板直接生成销售报表
  • ARM-A架构入门基础(三)MMU

    14天学习训练营导师课程 周贺贺 ARMv8 ARMv9架构 快速入门 1 MMU Memory Management Unit 内存管理单元 MMU的意义在于将软件程序的虚拟地址转换为真实的物理地址 2 MMU种类 Secure EL1
  • 数据结构——图解循环队列长度计算问题

    队列定义是这样的 define MAXSIZE 10 typedef struct ElemType data MAXSIZE int front rear SeqQueue 一个队列 一个存放元素的数组 一个队头指针 一个队尾指针 fro
  • np.array与list的内存大小比较

    1 np array与list 比较 a 1 2 3 4 需要4个指针和四个数据 增加了存储和消耗cpu a np array 1 2 3 4 只需要存放四个数据 读取和计算更加方便 2 np array与list所占内存 def test
  • sqlserver语言转mysql_SQLSERVER 脚本转MYSQL 脚本的方法总结

    标签 1 MYSQL中SQL脚步都要以分号 结尾 这点比SQLSERVER要严谨 2 所有关键字都要加上 比如 Status 替换成 Status 按是有个 的键 3 SQLSERVER的dbo 在mysql中不支持 都要去掉 4 isnu
  • java field static_Java基础之关键字static

    static是Java中的一个关键字 用来修饰成员变量与成员方法 还可以用于编写静态代码块 对于被static修饰的东西 JVM在加载类的时候 就给这些变量在内存中分配了一定的空间 即在编译阶段时就为这些成员变量的实例分配了空间 一 静态变
  • 机器学习入门之流浪地球

    机器学习入门之流浪地球 1 引言 2 问题描述 3 问题分析 4 问题求解 4 1 数据集 4 2 模型构造 4 3 损失函数 4 4 梯度下降 4 5 模型训练 4 6 预测 4 7 完整实现代码 5 总结与思考 1 引言 我国里程碑式科
  • 求n边形周长的k等分点坐标(今日头条)

    题目 本题来自今天头条的笔试 有一个n边形 P0 P1 Pn 每一条边皆为垂直或水平线段 现给定数值k 以P0为起点将n边形的周长分为k段 每段的长度相等 请打印出k等分点的坐标 T0 T1 Tk 的坐标 分析 1 可以计算出从第0个点 到
  • 线程池ExecutorService

    1 线程池创建方式 1 通过Executors创建线程池 import java util concurrent ExecutorService import java util concurrent Executors public cl
  • Ubuntu18.04未安装Qt报qt.qpa.plugin could not load the Qt platform plugin xcb问题的解决方法

    在Ubuntu 18 04开发机上安装了Qt 5 14 2 当将其可执行程序拷贝到另一台未安装Qt的Ubuntu 18 04上报错 拷贝可执行程序前 使用ldd将此执行程序依赖的动态库也一起拷贝过去 包括Qt5 14 2 5 14 2 gc
  • JS ES6 单链表2种插入尾部方式

    一种是类里加一个指向尾部最后一个元素指针 通过他添加一个元素到队列最后 一种是每次增一个元素都从头开始遍历直到最后一个 然后添加 打开出来有单链表结构是一样的 除了上面的 多了一个队尾指针 class Node 单个结点 data next
  • Cadence 生成gerber文件,嘉立创下单助手解析不了PCB板的问题

    概述 最近由于公司的原因 使用Cadence EDA工具绘制一块 TMC2300电机驱动板 遇到一些问题 在这记录一下坑 也方便遇到这个问题的硬件攻城狮得到解决 1 EDA Cadence 17 4 在生成gerber文件时 使用CAM35
  • type_traits技术与C++

    引言 一个方法实现过程中 业务逻辑很多都是相似的 但是与具体的特化类型的不同有一定的差异 这个时候可以采用特化模板的方式实现 不同的类型使用不同的特化实现 但是这种情况造成一定的业务逻辑的冗余 而trait技术可以将特化类型通过封装 以一个
  • windows10进行Colmap配置

    colmap下载 https demuc de colmap 新的colmap按照官网的编译方式仅需要预装好CMake Boost QT5 CUDA和CGAL 1 CMake CMake安装最简单 去官网下载好压缩包解压即可 建议下载新版
  • 使用sentencepiece模型替换词表

    最近在用DeBERTa模型跑一些下游任务 了解到了sentencepiece模型 用于替代预训练模型中的词表 sentencepiece 是google开源的文本Tokenzier工具 本身提供四种切分方法 包括 char word byt
  • Python爬虫三国演义

    爬取三国全篇内容 定位目标 https www shicimingju com book sanguoyanyi html 在这里插入代码片import requests from bs4 import BeautifulSoup f op