有一分热,发一分光,用Python 爬取鲁迅先生《经典语录》

文章来源:GitPython

作者:GitPython

《后浪》看的人热血沸腾。B站版本视频的底部,评论最多的一段话之一便是鲁迅先生这句。

“愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。能做事的做事,能发声的发声。有一分热,发一分光,就令萤火一般,也可以在黑暗里发一点光,不必等候炬火。” 


本文通过“好句子迷”网站,获取了鲁迅先生的大部分经典语录,并保存到了本地excel文件,这些发人深省的句子真的该好好读一读。

用到的模块:

import requests
from lxml import etree
import pandas as pd
import time

获取数据:

通过“好句子迷”网站,获取网页。

http://www.shuoshuodaitupian.com/writer/128_1

利用request模块,通过URL链接,获取html网页,下一步进行网页分析。

其中,URL只有最后一部分发生改变(1-10 :代表第1页--第10页的全部内容)

# 1、获取数据
headers = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " \
                         "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36",
           }

for i in range(0, 9):
    url = "http://www.shuoshuodaitupian.com/writer/128_" + str(i + 1)  # 1-10页
    result = requests.get(url, headers=headers).content.decode()

解析数据:

通过Xpath语句解析,分别获取句子的内容、来源和评分等,如图所示。

把获取的每一组数据,放在一个字典里,再把字典追加到一个列表中。

代码部分:

# 2、解析数据
html = etree.HTML(result)
div_list = html.xpath('//div[@class="item statistic_item"]')
div_list = div_list[1:-1]

for div in div_list:
    # 遍历每一条信息

    item = {}

    # ./ 注意从当前节点,向下获取
    item['content'] = div.xpath('./a/text()')[0]
    item['source'] = div.xpath('./div[@class="author_zuopin"]/text()')[0]
    item['score'] = div.xpath('.//a[@class="infobox zan like "]/span/text()')[0]

    item_list.append(item)

print("正在爬取第{}页".format(i + 1))
time.sleep(0.1)

保存数据:

把上述获取的数据放到一个列表中后,可通过pandas模块把数据类型转变为DataFrame,进而可以轻松地保存到excel文件中。

为防止中文乱码,注意编码格式。

# 3、保存数据

df = pd.DataFrame(item_list) # 把数据存成csv文件
df.to_csv('鲁迅经典语录.csv', encoding='utf_8_sig') # 保证不乱码

按照评分进行排序之后的结果,如下图。


源码获取方式:
  • 第一步:点击文章右下角的“在看”按钮

  • 第二步:在公众号回复 后浪 即可获取

如果你觉得文章不错的话,分享、收藏、在看、留言666是对老表的最大支持。

老表Pro已经满了

所以大家加老表Max吧

每日留言

说说你最近遇到的一个编程问题?

或者新学的一个小技巧?

字数不少于15字

完整Python基础知识要点

Python小知识 | 这些技能你不会?(一)

Python小知识 | 这些技能你不会?(二)

Python小知识 | 这些技能你不会?(三)

Python小知识 | 这些技能你不会?(四)

近期推荐阅读:

【1】整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了

【2】【终篇】Pandas中文官方文档:基础用法6(含1-5)

好文章,我在看❤️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值