端午节,我用Python爬取屈原的诗

    端午节快到了,端午节令我记忆深刻就是插杨柳,和吃粽子。我们那边没有赛龙舟的习俗,因为我们住在山上,都没有河流,有也只是那种小溪。这可能是因为我们那边的位置原因吧! 导致我们没有赛龙舟的习俗o(╥﹏╥)o

每到端午节,家家户户都要在门口插杨柳,小时候,大人忙的时候就让我们小孩去半山腰的田地里要些柳枝。因为哪里有一颗柳树旁边就一个不用的水库。我们都会先拿柳枝在那个水库玩,玩够了再拿回家。现在想想,不得不说童年的快乐真的很简单!

    水库是以前用来给田里的水稻供水的,几乎每一片水稻地就是有一个用水泥建的小水库。但在我记忆中,那些水库从来没有过水。因为旁边的地都用来种玉米了,或者其他的了。种水稻可能是我还没有出生的时候,或者很小很小的时候。应该是爷爷年轻那时候吧!

    这几年除了过大年,都很少回家了。特别是工作以后,去年开始实习,导致去年一年都没有回家。今年端午也不回去了,因为回一趟家,要转好几次车才回到家,你到家差不多要花费一天的时间。

    虽然不能回家,但端午还是要过,由于最近在学爬虫,自己也是比较喜欢古诗。所有想用Python爬取古诗网中屈原的诗。以纪念屈原。

    首先要安装两个库requestsbs4。安装命令如下:

# requests   用来发送网路请求的库
pip install requests

# bs4 对象的 BeautifulSoup 用来解析html的
pip install bs4

    上代码


import time
import requests
from bs4 import BeautifulSoup

# 请求头
header = {
	"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36"
}

# 获取每页数据的方法
def get_page_list(url, params):
	result = requests.get(url, headers=header, params=params)
	page_html = BeautifulSoup(result.text, "html.parser")

	# 所有诗的div
	poems_html = page_html.find("div", id="leftZhankai")

	# 每首诗的div
	poems = poems_html.find_all("div", class_="cont")

	poems_list = []

	for poem in poems:
		dic = {}
		title = poem.find("a", target="_blank").text
		content = poem.find("div", "contson").text

		dic = {
			"title": title,
			"content": content,
		}

		poems_list.append(dic)


	result.close()

	current = params["page"]
	print(f"第{current}页爬取完成, 任务仍在进行...")

	return poems_list


# 获取所有数据的方法
def get_poems(url):
	params = {
		"page": "1",
		"tstr": "屈原",
	}

	poems_list = []
	for item in range(1, 5):
		params["page"] = item

		poems_page = get_page_list(url, params)

		poems_list.extend(poems_page)

		time.sleep(1)

	return poems_list


# 下载数据的方法
def download_data(path, data):
	with open(path, "w", encoding="utf-8") as f:
		for poem in data:
			f.write(poem["title"])
			f.write(poem["content"])

			f.write("\n\n")


# 花式打印
def printer(text, delay = 0.1):
	for word in text:
		print(f"\033[1;34m {word}\033[0m", end='', flush=True)
		time.sleep(delay)




""""
主方法  ----> 干了两件事:
				1. 获取数据
				2. 下载数据
""" 
def main():
	print("\n")
	printer("为了纪念屈原,我用Python爬取古诗网中屈原的所有诗文,方便日后的背诵。")
	time.sleep(0.5)
	print("\n")
	print('-------------------------------------------------------------------------------')
	print("|\033[1;31;40m                                 开始行动                                    \033[0m|")
	print('-------------------------------------------------------------------------------')


	# 获取数据
	poems_list = get_poems("https://so.gushiwen.cn/shiwens/default.aspx")

	# 下载数据
	download_data("屈原诗文大全.txt", poems_list)

	print('-------------------------------------------------------------------------------')
	print("|\033[1;31;40m                                 行动结束                                    \033[0m|")
	print('-------------------------------------------------------------------------------')


if __name__ == "__main__":
	main()

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值