查看原文
其他

千古伤心词人,词伤几何?

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:李忠旺,河南大学经济学院

本文编辑:尚晨曦

技术总编:王子一

Stata&Python云端课程来啦!

为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!

导读

似乎从刚掌握语言开始,我们就在读诗;“春眠不觉晓,处处闻啼鸟”、“床前明月光,疑是地上霜”、“黄梅时节家家雨,青草池塘处处蛙”,这些大概是大多数人的启蒙诗词。

那个时候的我们,也许并不明白自己所念诵之诗的意味,只觉得郎朗上口,并不会细细品读。有时候会想,诗词的意义究竟在哪里?后来读了孟郊的“春分得以马蹄疾,一日看尽长安花”、读了柳永的“杨柳岸,晓风残月”、读了白居易的“绿蚁新醅酒,红泥小火炉,晚来天欲雪,能饮一杯无”,忽觉某些场景可能也只有诗词才能写尽其中的意境了。其中最让我难忘的是读到纳兰容若的经典词作“一生一代一双人,争教两处销魂。相思相望不相亲,天为谁春”,究竟经历了怎样的人生,才会写下如此伤感之词呢。今天我们就来学习一下纳兰性德(纳兰容若)的词作,看一看这位“千古伤心词人”是如何表达自己的凄婉人生的。

今天的内容以中国诗词论坛 www.zhgst.net 为例:

我们在搜索框中输入纳兰性德,然后在诗词中点击更多纳兰性德的诗词,这个网站一共收录了纳兰193首诗词。

抓取诗词

F12进入开发者模式,Ctrl+R刷新,再点击Network,点击第一条文件链接。在预览中我们可以发现,该文件链接就有我们想要爬取的诗词内容。

小试牛刀,抓一下第一页的诗词,具体代码如下:
import requestsfrom lxml import etreeimport pandas as pdurl="http://www.zhgst.net/gushi/0/375/0/0/0/1/" html = requests.get(url)html.encoding="ut-f8"tree = etree.HTML(html.text)content=[]content_xpath="//li/p/text()"content_list=tree.xpath(content_xpath)for poem in content_list: poem=poem.strip() content.append(poem)print(content)

结果如下:

这里需注意爬取诗词时会出现每一首诗的开头会有两个换行符的情况,所以需要用strip()方法将其删除。删除前长这样:

想要诗词更完整一点,可以抓取一下题目,具体代码如下:

import requestsfrom lxml import etreeimport pandas as pdimport reurl="http://www.zhgst.net/gushi/0/375/0/0/0/1/"html = requests.get(url)html.encoding="ut-f8"tree = etree.HTML(html.text)content=[]title_xpath="//ul/li/strong/a/text()"content_xpath="//li/p/text()"title_list=tree.xpath(title_xpath)content_list=tree.xpath(content_xpath)for poem in content_list: poem=poem.strip() content.append(poem)df = pd.DataFrame(data = [title_list, content]).Tdf.columns = ["题目","内容"]df

结果如下:

这是第一页的诗词内容,纳兰的诗词一共有18页,其中每一页的网页链接,只需要改变原网页链接中最后一个参数就可以了,代码如下:

import requestsfrom lxml import etreeimport pandas as pdimport retotalcont=[]for page in range(1,19): print("正在抓取第%g页"%(page)) url="http://www.zhgst.net/gushi/0/375/0/0/0/%g/"%(page) html = requests.get(url) html.encoding="utf-8" tree = etree.HTML(html.text) content_xpath="//li/p/text()" content=[] content_list=tree.xpath(content_xpath) for poem in content_list: poem=poem.strip() poem=re.sub("【.*】","",poem) poem=re.sub("\r\n","",poem) poem=re.sub("\[\d\]","",poem) content.append(poem) totalcont.extend(content) df = pd.DataFrame(data = [totalcont]).Tdf

结果如下:

注意:在最后几页会出现一些注释一类的文字信息,所以需要在循环中加入一些正则表达式将其清洗干净。

最后我们用词云图看看,纳兰最喜欢用哪有词来表达情感:

词云分析
通过词云图我们发现,“西风”、“萧萧”、“离别”多次在纳兰的诗词中出现。“萧萧”和“离别”自不必说,表达的多是哀伤之情,而“西风”在古诗词中多代表萧瑟、别离之意。比如马致远在《天净沙·秋思》中用“古道西风瘦马,夕阳西下,断肠人在天涯”来表达自己孤独一人漂泊远方的悲伤之情。
emmm...纳兰大人的“千古伤心词人”的称号,确实不是空穴来风。我很喜欢他在诗中描述的“绣榻闲时,并吹红雨;雕阑曲处,同倚斜阳”的生活。
分析完纳兰,顺便分析一下柳永的诗词,结果如下:

柳永词在当时的受欢迎程度被人用“凡有井水处,皆能歌柳词”来形容,意思是说,只要有人烟的地方,都能听到柳永写的词。词云图也可以看出他曾经是个风流倜傥的江湖落落狂生。大家都喜欢谁的诗词呢,不妨自己动手爬一下吧~

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。

欢迎大家点赞、转发、评论哦~

对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐 

去哪儿网攻略爬取——跟我一起去大理吧

"有你才有团"——Stata爬取王者荣耀英雄海报

  爬虫实战|嚣张的徽州宴老板娘错在哪?

如何获取衡量股民情绪的指标?|东方财富股吧标题爬虫

利用Python构建马科维茨有效边界

rangestat,让统计量灵活滚动起来!

听说这样做立项成功率更高哦

如何处理缺失值?这一篇搞定!

  善用dataex命令,高效沟通你我他

  用Markdown制作简历,强力助力你的求职季

大数据下的大学分数线排行榜,快来围观!

《觉醒年代》—带你回到百年前

用Stata画的三维图很奇怪怎么办?

如何随机生成满足特定数据特征的新变量?

爬取无法翻页网页——自然科学基金项目及可视化

爬取京东评论数据进行情感分类

Stata与音乐之间的酷炫连接

这些年,爬虫俱乐部走出的博士们!
         看这里,近五年各校高被引论文上榜名单!

高校经管类核心期刊发文排行榜

疯狂的科研创新加速器——Stata!

  可盐可甜,“粽”有所爱,快来pick你最爱的粽子吧!

  好玩有趣的手绘图形库——cutecharts

  爬虫实战|摩尔庄园微博话题讨论

  一季度财报出炉,哪些公司最烧钱?

  一季度财报出炉,哪些公司最赚钱?

  技能篇 | 图片合并大法

  批量空气质量数据文件合并分析

  Stata17之日期时间新功能

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存