爬虫实战——古诗文网古诗爬取

本文介绍了一种使用正则表达式和requests库从古诗文网站爬取诗词信息的方法,包括标题、朝代、作者及内容。通过解析网页源代码,实现了对1到10页诗词数据的有效抓取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import re
import requests

# url = 'https://www.gushiwen.org/default_1.aspx'


def parse_page(url):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'
    }
    response = requests.get(url, headers)
    text = response.text
    # print(text)
    titles = re.findall(r'<div\sclass="cont">.*?<b>(.*?)</b>', text, re.DOTALL)
    # print(titles)
    dynasties = re.findall(r'<p\sclass="source".*?<a.*?>(.*?)</a>', text, re.DOTALL)
    # print(dynasties)
    authors = re.findall(r'<p\sclass="source".*?</a>.*?<a.*?>(.*?)</a>', text, re.DOTALL)
    # print(authors)
    contents = re.findall(r'<div\sclass="contson".*?>(.*?)</div>', text, re.DOTALL)
    # print(contents)
    poems = []
    for content in contents:
        # print(content)
        x = re.sub(r'<.*?>', "", content)
        # print(x)
        poems.append(x.strip())
        # print(poems)
        shis = []
    for value in zip(titles, dynasties, authors, poems):
        title, dynasty, author, poem = value
        shi = {
            'title': title,
            'dyna': dynasty,
            'author': author,
            'poem': poem
        }
        shis.append(shi)
        for shi in shis:
            print(shi)
            print("="*30)


def main():
    base_url = 'https://www.gushiwen.org/default_{}.aspx'

    for x in range(1, 11):	# 利用正则表达式爬取1-10页的内容
        url = base_url.format(x)
        parse_page(url)


if __name__ == '__main__':
    main()

正则表达式爬取古诗文网的诗词

### Scrapy 爬虫实战古诗文数据抓取 #### 使用 Scrapy 构建爬虫 为了实现对古诗文站的数据抓取,可以利用 Scrapy 框架来创建和管理爬虫项目。通过 `scrapy genspider` 命令初始化一个新的爬虫文件,指定其名称以及目标站点 URL。例如,在终端中运行如下命令可生成名为 `poemSpider` 的爬虫文件用于访问 `gushiwen.cn`[^1]。 ```bash scrapy genspider poemSpider gushiwen.cn ``` 此操作会自动生成一个基础模板供开发者进一步完善逻辑功能。 #### 启动与执行方式 启动已定义好的爬虫有多种途径可供选择。一种常见做法是在 PyCharm 中打开 Terminal 面板并键入特定指令触发流程: ```bash scrapy crawl poemSpider ``` 上述语句能够立即激活对应命名的蜘蛛模块开始工作,并于数秒之内返回采集到的信息资源[^2]。 另一种替代方案涉及编写独立脚本文件 (如命名为 run.py),放置于相同路径级别之下以便调用内部 API 接口达成同样效果: ```python from scrapy import cmdline cmdline.execute("scrapy crawl poemSpider".split()) ``` 这种方法允许更灵活地集成其他 Python 工具链或者自动化调度机制。 #### 复杂页面解析技巧 当面对某些特殊结构化内容比如带有折叠按钮 ("展开全文") 的诗歌翻译部分时,则需额外注意如何提取隐藏区域内的全部文字材料。如果单纯依赖默认请求难以获得完整版块信息的话,可以通过分析 HTML 文档源码定位相关链接地址模式——即使这些附加片段可能并未遵循简单数值序列规则排列组合而成。此时借助正则表达式工具可以从响应对象里筛选符合条件的目标字符串作为后续拼凑成最终有效URL的基础素材[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值