用Python爬取古诗文网的各类古诗

news2024/12/22 23:39:40

fetch-gushiwen

用途

可以拿去用于个人知识库、知识图谱的创建等其他学习用途。

使用

输入古诗文网的链接,即可爬取该页面所有诗歌的诗名,作者,朝代,内容,译文,注释,赏析,创作背景。

输出的json格式如下:

{'name': '行宫', 'author': '元稹', 'dynasty': '唐代', 'content': '寥落古行宫,宫花寂寞红。白头宫女在,闲坐说玄宗。', 'trans': '曾经富丽堂皇的古行宫已是一片荒凉冷落,宫中艳丽的花儿在寂寞寥落中开放。幸存的几个满头白发的宫女,闲坐无事只能谈论着玄宗轶事。', 'annotation': '寥(liáo)落:寂寞冷落。行宫:皇帝在京城之外的宫殿。这里指当时东都洛阳的皇帝行宫上阳宫。宫花:行宫里的花。白头宫女:据白居易《上阳白发人》,一些宫女天宝末年被“潜配”到上阳宫,在这冷宫里一闭四十多年,成了白发宫人。说:谈论。玄宗:指唐玄宗。', 'appreciation': '元稹的这首《行宫》是一首抒发盛衰之感的诗,这首短小精悍的五绝具有深邃的意境,富有隽永的诗味,倾诉了宫女无穷的哀怨之情,寄托了诗人深沉的盛衰之感。诗人先写环境。首句中“寥落”已点出行宫的空虚冷落,又着一“古”字,更显其破旧之象。这样的环境本身就暗示着昔盛今衰的变迁。而后以“宫花寂寞红”续接,此处可见运思缜密。娇艳红花与古旧行宫相映衬,更见行宫“寥落”,加强了时移世迁的盛衰之感。两句景语,令人心无旁骛,只有沉沉的感伤。后两句由景及人,写宫女,“白头”与第二句中的红花相映衬。宫中花开如旧,而当年花容月貌的宫女已变成了白发老妇。物是人非,此间包含着多少哀怨、多少凄凉便不言而喻了。末句“闲”字与上文“寂寞”相照应,写出宫女们长年受冷落的孤寂与无奈。过去她们的一颦一笑、盛装丽服只为取悦君王,而今再无缘见龙颜,她们还能做什么呢? 只能无聊地“闲”在冷宫。而这些宫女们所谈的仍旧是玄宗盛世。这一方面表现了她们对往昔生活的追忆,另方面也证明了如今无可言说的空虚。比较之下,那种深沉的盛衰之感越发鲜明突出而具体了。这里,寥落古行宫中的白头宫女,还是唐玄宗时代历史的见证人。唐玄宗在其继位后期,宠幸杨贵妃,终日沉溺在淫乐酒色之中,把政务全部委给奸相李林甫和杨国忠,朝纲紊乱,谄佞当道,终于酿成安史之乱。乱后,玄宗被迫退位,赫赫不可一世的大唐王朝亦从此一蹶不振,日益走向下坡路。白居易在《长恨歌》里曾深致感慨说:“缓歌慢舞凝丝竹,尽日君王看不足。渔阳鼙鼓动地来,惊破霓裳羽衣曲。”四句诗,已形象地概括出玄宗昏愦好色与亡国致乱的历史因由,其讽刺与揭露是十分深刻的。元稹这首短诗当然不可能象白诗那样铺张扬厉,极尽渲染之能事,他只能采取对照、暗示点染等方法,把这一段轰轰烈烈的历史高度浓缩,加以典型化的处理,从而让人回味咀嚼。寥落的古行宫,那在寂寞之中随岁月更替而自生自落的宫花,那红颜的少女变为白发老人,都深深地带有时代盛衰迁移的痕迹。白头宫女亲历开元、天宝之世,本身就是历史的见证人,“闲坐说玄宗”的由治而乱。这本是诗篇主旨所在,也是诗人认为应引以为戒的地方,却以貌似悠闲实则深沉的笔调加以表现,语少意多,有无穷之味。二十个字,地点、时间、人物、动作,全都表现出来了,构成了一幅非常生动的画面。这个画面触发读者联翩的浮想:宫女们年轻时都是花容月貌,娇姿艳质,这些美丽的宫女被禁闭在这冷落的古行宫中,成日寂寞无聊,看着宫花,花开花落,年复一年,青春消逝,红颜憔悴,白发频添,如此被摧残,往事岂堪重新回顾!然而,她们被幽闭冷宫,与世隔绝,别无话题,却只能回顾天宝时代玄宗遗事,此景此情,令人凄绝。“寥落”、“寂寞”、“闲坐”,既描绘当时的情景,也反映诗人的倾向。凄凉的身世,哀怨的情怀,盛衰的感慨,二十个字描绘出那样生动的画面,表现出那样深刻的思想。这首诗正是运用以少总多的表现手法,语少意足,有无穷味。另一个表现手法是以乐景写哀情。我国古典诗歌,其所写景物,有时从对立面的角度反衬心理,利用忧思愁苦的心情同良辰美景气氛之间的矛盾,以乐景写哀情,却能收到很好的艺术效果。这首诗也运用了这一手法。诗所要表现的是凄凉哀怨的心境,但却着意描绘红艳的宫花。红花一般是表现热闹场面,烘托欢乐情绪的,但在这里却起了很重要的反衬作用:盛开的红花和寥落的行宫相映衬,加强了时移世迁的盛衰之感;春天的红花和宫女的白发相映衬,表现了红颜易老的人生感慨;红花美景与凄寂心境相映衬,突出了宫女被禁闭的哀怨情绪。红花,在这里起了很大的作用。这都是利用好景致与恶心情的矛盾,来突出中心思想,即王夫之《姜斋诗话》所谓“以乐景写哀”,一倍增其哀。白居易《上阳白发人》“宫莺百啭愁厌闻,梁燕双栖老休妒”,也可以说是以乐写哀。不过白居易的写法直接揭示了乐景写哀情的矛盾,而元稹《行宫》则是以乐景作比较含蓄的反衬,显得更有余味。这首绝句语言平实,但很有概括力,精警动人,也很含蓄,给人以想象的天地,历史沧桑之感尽在不言之中,寓意深刻,自来评价很高。王建的《宫词》,白居易的《长恨歌》,元稹的《连昌宫词》,都是长达千字左右的宏篇巨制,详尽地描述了唐玄宗时代治乱兴衰的历史过程,感叹兴亡。总结教训,内容广博而深刻。元稹这首小诗总共不过二十个字,能入选《唐诗三百首》,与这些长篇巨作比美,可谓短小精悍,字字珠玑。', 'background': '元稹生活在中唐年代,正值唐朝经历过安史之乱不久,国力的各个方面都在走下坡路之时。这首诗可能是他在唐宪宗元和四年(809)作于洛阳。'}

例如我要爬取唐诗三百首,先去古诗文网获得唐诗三百首的网址链接:
在这里插入图片描述

右侧的古诗三百,宋词三百,小学古诗等都可以爬取你只需要拿到链接就可以了。

运行python代码,结果如下:
在这里插入图片描述

代码结构

import requests
import re
from bs4 import BeautifulSoup


def fetch_html(url):
    try:
        response = requests.get(url)
        response.raise_for_status()
        return response.text
    except requests.RequestException as e:
        print(f"Error fetching HTML content: {e}")
        return None


def extract_poem_urls(html_content):
    soup = BeautifulSoup(html_content, 'html.parser')
    poem_urls = []

    for a_tag in soup.find_all('a', href=True):
        href = a_tag['href']
        if href.startswith("/shiwenv_"):
            full_url = f"https://so.gushiwen.cn{href}"
            poem_urls.append(full_url)

    return poem_urls


def fetch_poem_details(url):
    poem_details = {
        "name": "",
        "author": "",
        "dynasty": "",
        "content": "",
        "trans": "",
        "annotation": "",
        "appreciation": "",
        "background": ""
    }

    soup = BeautifulSoup(fetch_html(url), 'html.parser')
    #省略


if __name__ == "__main__":
    url = input("Please enter the URL(example:https://so.gushiwen.cn/gushi/tangshi.aspx): ")
    poem_urls = []
    html_content = fetch_html(url)
    if html_content:
        poem_urls.extend(extract_poem_urls(html_content))
    else:
        print("Failed to fetch or parse HTML content.")

    for url in poem_urls:
        details = fetch_poem_details(url)
        print(details)

完整爬虫代码见仓库:https://github.com/palp1tate/fetch-gushiwen

声明

本爬虫代码仅可用于个人学习用途,切勿用于任何商业用途!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1489612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文心一言 VS 讯飞星火 VS chatgpt (208)-- 算法导论15.4 5题

五、设计一个 O( n 2 n^2 n2) 时间的算法,求一个 n 个数的序列的最长单调递增子序列。要写代码的时候,请用go语言。 文心一言,抛panic: 在 Go 语言中设计一个 O(n^2) 时间复杂度的算法来求一个 n 个数的序列的最长单调递增子序列…

【数据结构】20 树的应用(堆及其操作)

堆的定义 堆是一种优先队列,从堆中取出元素时按照元素的优先级大小,而不是元素进入队列的先后顺序。 堆的最常用结构是二叉树,一般为完全二叉树。通常使用数组来实现堆的存储。 最大堆:任一结点的值大于或等于其子节点的值。这一…

【论文阅读】Mamba:选择状态空间模型的线性时间序列建模(一)

文章目录 Mamba:选择状态空间模型的线性时间序列建模介绍状态序列模型选择性状态空间模型动机:选择作为一种压缩手段用选择性提升SSM 选择性SSM的高效实现先前模型的动机选择扫描总览:硬件感知状态扩展 Mamba论文 Mamba:选择状态空间模型的线性时间序列建…

【.NET Core】深入理解IO - 读取器和编写器

【.NET Core】深入理解IO - 读取器和编写器 文章目录 【.NET Core】深入理解IO - 读取器和编写器一、概述二、BinaryReader和BinaryWriter2.1 BinartReader类2.2 BinaryWriter类 三、StreamReader和StreamWriter3.1 StreamReader类3.1 StreamWriter类StreamWriter类构造函数Str…

AI大语言模型【成像光谱遥感技术】ChatGPT应用指南

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用,人工智能…

想学习FPGA,建议购买哪一款开发板呢?

FPGA项目: 多通道信号采集呈像系统 该系统是以Artix-7系列的FPGA为主控芯片,设计并实现了一款基于A7系列开发板的多通道信号采集呈像系统,该设计采用DAC芯片(数模转换芯片)将数字信号转换成模拟信号,通过…

LLM春招,搜广推,nlp(2)

Encoder和Decoder怎么交互的 decoder里面的K,V输入用的是encoder的输出,并不是共享了K, V参数,decoder每层的参数都是独立的。Decoder每层是有两块Attention的:一块是正常的Self-Attention,QKV的输入都来自Decoder上一…

ArcGIS学习(九)选址分析

ArcGIS学习(九)选址分析 本任务给大家带来的案例是租房选址分析。选址分析是我们平时经常接触到的分析场景。概括起来说,选址分析就是根据选址条件来确定哪些区域满足我们的选址要求。首先,先来看看我们这个案例的场景和基础数据。我们以某个城市某一租客的租房选址为例。…

STM32CubeMX学习笔记8 -ADC

1. ADC简介 ADC 是Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。简单地说就是将模拟电压值,转换成对应的肉眼…

完结撒花~Matlab论文插图绘制模板第139期—罗盘图

2021年2月2日,Matlab论文插图绘制模板第1期,启动。 三年后…… 2024年3月4日,Matlab论文插图绘制模板第139期,完结。 别的也不多说了,《Matlab论文插图绘制模板》1-139期精修合集,正加速整理制作中&…

7款炫酷的前端动画特效分享(三)(附效果图及在线演示)

分享7款好玩的前端动画特效 其中有CSS动画、SVG动画、js小游戏等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 CSS3模仿四季交替动画 基于HTML5CSS3实现的卡通风格一年四季交替动画特效 以下效果图只能体现框架的…

mac下终端命令提示补全

欢迎来到我的博客,代码的世界里,每一行都是一个故事 mac下终端命令提示补全 前言Zsh-autosuggestions原理解析:智能提示的工作方式1. 命令历史分析:2. 智能提示生成:3. 用户交互和选择:4. 配置和个性化&…

Java集合框架-Collection和Map

文章目录 Collection-单列集合特点ListArrayListLinkedListVecter SetHashSetTreeSet Map-键值对集合特点Map常用APIput添加细节remove Map的三种遍历方式1.通过键找值2.通过"键值对"3.Lambda表达式foreach源码 HashMap需求 为什么要使用泛型 泛型的优点1.集合中存储…

《精益DevOps》译者序

计算机网络的发展导致了IT领域中的两个重要发展——虚拟化和分布式计算,云服务是虚拟化的一个直接体现,而微服务架构则是分布式计算的一个重要应用领域。不论是虚拟化还是分布式计算,都对软件工程中的研发效能提出了新的问题和挑战&#xff0…

Linux x86平台获取sys_call_table

文章目录 前言一、根据call *sys_call_table来获取二、使用dump_stack三、根据MSR_LSTAR寄存器四、使用sys_close参考资料 前言 Linux 3.10.0 – x86_64 最简单获取sys_call_table符号的方法: # cat /proc/kallsyms | grep sys_call_table ffffffff816beee0 R sy…

实名制交友-智能匹配-仿二狗交友系统-TP6+uni-APP小程序H5公众号-源码交付-支持二开!

一、代码风格 通常不同的开发者具备不同的代码风格,但为了保证语音交友系统开发质量,在编码前需要进行代码风格的统一,通过制定一定的规则,约束开发者的行为。具有统一风格的代码才能更清晰、更完整、更容易理解、更方便后期维护…

互联网加竞赛 车道线检测(自动驾驶 机器视觉)

0 前言 无人驾驶技术是机器学习为主的一门前沿领域,在无人驾驶领域中机器学习的各种算法随处可见,今天学长给大家介绍无人驾驶技术中的车道线检测。 1 车道线检测 在无人驾驶领域每一个任务都是相当复杂,看上去无从下手。那么面对这样极其…

AURIX CSA(上下文存储)介绍(续写中...)

1.CSA概述 CSA(Context Save Areas)上下文存储区域,每次函数调用、进入中断、进入Trap都会存CSA对象,便于退出时候恢复。每个CSA对象的大小为固定的64字节。最大可以支持分配为2^164M。 2.GPRs寄存器 32个通用寄存器(GPRs) 16个…

Redis缓存【重点】

参考链接 https://xiaolincoding.com/redis/cluster/cache_problem.html#%E7%BC%93%E5%AD%98%E9%9B%AA%E5%B4%A9 目录 缓存雪崩大量数据同时过期Redis 故障宕机 缓存击穿第一种方案,非法请求的限制第二种方案,缓存空值或者默认值第三种方案,使…

回溯算法套路②组合型回溯+剪枝【基础算法精讲 15】

学习地址 : 回溯算法套路②组合型回溯剪枝【基础算法精讲 15】_哔哩哔哩_bilibili 回顾 : 从n 个数中选出k个数的组合 , 可以看成是长度固定的子集 ; 剪枝技巧 : 77 . 组合 链接 : . - 力扣(LeetCode) 枚举下一个元素选…