从网站“https://so.gushiwen.cn/gushi/tangshi.aspx”中采集唐诗三百首的内容。具体要求如下:
1.采集数据完整,内容规范(即不包含特殊符号,如换行符、制表符等)。
2.结果数据保存为txt格式的文本文件,每一行包含一首古诗,具体包括信息:诗类型、诗题目、诗内容、诗作者;
3.代码逻辑结构清晰,语法规范。
python爬取古诗代码
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
为了满足上述需求,可以使用Python中的
requests
库来获取网页内容,以及BeautifulSoup
库来解析HTML并提取所需信息。以下是实现这一目标的完整代码示例:import requests from bs4 import BeautifulSoup def fetch_tang_poems(): url = "https://so.gushiwen.cn/gushi/tangshi.aspx" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } response = requests.get(url, headers=headers) response.encoding = 'utf-8' # 设置正确的编码方式 soup = BeautifulSoup(response.text, 'html.parser') poems = [] for div in soup.find_all('div', class_='sons'): title = div.find('b').get_text(strip=True) author = div.find('p', class_='source').find('a').get_text() content_tags = div.find_all('div', class_='contson') if content_tags: content = content_tags[0].get_text(strip=True).replace('\n', '').replace('\r', '') # 组织数据 poem_info = f"唐诗|{title}|{content}|{author}" poems.append(poem_info) return poems def save_to_file(poems): with open('tang_poems.txt', 'w', encoding='utf-8') as file: for poem in poems: file.write(poem + '\n') if __name__ == '__main__': poems = fetch_tang_poems() save_to_file(poems)
这段代码首先定义了一个函数
fetch_tang_poems()
用于从指定URL抓取唐诗信息。它发送一个GET请求到目标网址,并使用BeautifulSoup
解析返回的HTML文档。通过查找特定的HTML元素,可以提取出每首诗的标题、作者和内容。提取的信息被整理成字符串格式,其中包含了诗的类型、标题、内容和作者。接着,
save_to_file()
函数将这些信息写入到一个名为tang_poems.txt
的文本文件中,每一首诗占一行。注意:
- 这段代码可能需要根据实际网页结构进行调整,因为网站可能会有更新。
- 网站可能有反爬虫策略,频繁访问可能会导致IP被封禁。
- 确保在合法合规的前提下进行网络爬虫操作。
确保在运行此代码前已安装
requests
和beautifulsoup4
库,可以通过pip安装:pip install requests beautifulsoup4
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 校内二手商品转让网站
- ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
- ¥100 求Web版SPC控制图程序包调式
- ¥20 指导如何跑通以下两个Github代码
- ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
- ¥15 C++为什么这个代码没报错运行不出来啊
- ¥15 一道ban了很多东西的pyjail题
- ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
- ¥15 C++识别堆叠物体异常
- ¥15 微软硬件驱动认证账号申请