目录
目录… 错误!未定义书签。
正文 4
1绪论 4
2相关技术介绍 4
2.1网络爬虫技术 4
2.1.1网络爬虫技术概述 4
2.1.2python 的网络请求 4
2.1.3如何解决网页的反爬问题 5
3设计目的与要求 5
3.1 程序设计的目的与要求 5
4总体设计 5
4.1 程序目录结构设计 5
5详细设计 6
5.1分析目标网站 6
5.1.1URL 组成结构 6
5.1.2分析网页 HTML 结构 7
6数据结构设计描述,各模块(函数)的功能介绍 8
6.1数据结构设计描述 8
6.2主要函数的功能介绍 9
7结果分析 11
7.1运行结果及分析 11
1.开始运行程序,输入爬取文章的开始日期,如图: 11
2.输入爬取文章的结束日期如图 11
3.回车后开始运行程序,如图: 12
4.爬取文章完成后,写入本地,然后会自动结束程序: 12
5.爬取完成后成功写入本地中,每个文章一个 txt: 13
8 总结 14
参考文献 14
2相关技术介绍
2.1网络爬虫技术

2.1.1网络爬虫技术概述

网络爬虫技术是近些年来成熟并流行起来的一项技术。现阶段研究通常集中在各种不同领域下的运用。其通俗的来说就是通过模拟客户端(各种浏览器)发送网络请求,以获取服务端的响应,并按照规则提取指定数据的程序。

2.1.2python 的网络请求

python 中常用的 HTTP 网络请求通常有 3 种方式:urllib、urllib3 以及本论文使用的requests。下面将介绍 requests 模块的使用。
requests 模块是 python 的第三方模块,该模块在实现 HTTP 请求时要比其他 2 种方式简单,在使用前需要先在 cmd 命令行里执行 pip install requests。
requests 模块中使用最多的就是 GET 和 POST 请求方式,2 者的主要区别在于 GET 请求没有请求体,它把数据放在 url 地址中,而 POST 有请求体,常用于登录注册,且它携带的数据量比 GET 请求方式大,所以常用于传输大文本。
本文中使用的是 GET 请求方式,它的请求方式为: response=requests.get(url,params=params,headers=headers)
1.url 为基准的 url 地址,不包含查询参数。

2.该方法会自动对 params 字典编码,然后和 url 拼接。
2.1.3如何解决网页的反爬问题
通常我们在请求一个网页时,无论是通过哪种请求,发现如果不带 headers 参数一般会出现 403 错误,这种错误的原因是通常网页为了防止恶意的采集数据信息会设置一些反爬措施,从而拒绝爬虫程序的访问。因而通过携带 headers 参数,可以达到模仿浏览器的头部信息进行访问。具体反爬策略:第一遍,先爬取版面目录,将每一个版面的链接保存下来;第二遍,依次访问每一个版面的链接,将该版面的文章链接保存下来;第三遍,依次访问每一个文章链接,将文章的标题和正文保存到本地。
3设计目的与要求
3.1程序设计的目的与要求
可以输入要爬取的日期以及结束日期,将这些日期内的文章全部爬取下来,以日期为名自动生成一个主存储目录,爬取到的文章保存写入 txt 文件中,每个文本的存储名字以日期加序号存储。
本程序需要在 python 下,并且需要下载程序依赖的包才能运行。本程序需要用到的包主要有:requests、bs4、os、datetime。
4总体设计
4.1程序目录结构设计
程序项目结构非常简单,一个主程序(paweb.py),还有是根据日期分类的资源总目录, 总目录下自动根据日期生成存储文章的目录,再下面是是具体文章的 txt 文本,每个 txt 存储一篇文章。
4.1 程序总体结构设计
该爬虫程序没有用户界面,基于 python 环境,运行在 Windows PowerShell 窗口中,使用流程为:输入需要爬取的开始日期,结束日期、回车后等待爬取即可,爬取完成后会有提示。工作流程为:根据输入的日期拼接 URL,获取当天报纸的各版面的链接列表,再获取报纸版面的文章链接列表,然后解析 HTML 网页,获取新闻的文章内容,获取到文章标题和正文信息后写入到对用的文件中,最后程序结束运行并提示已经爬取完成。


    #主函数:程序入口
if __name__ == '__main__':
    
    # 输入起止日期,爬取之间的新闻
    print('---文章爬取系统---')
    beginDate = input('请输入开始日期(格式如20220706):')
    endDate = input('请输入结束日期(格式如20220706):')
    data = get_date_list(beginDate, endDate)

    for d in data:
        year = str(d.year)
        month = str(d.month) if d.month >=10 else '0' + str(d.month)
        day = str(d.day) if d.day >=10 else '0' + str(d.day)
        #爬取后文章t统一存到这个文件夹,没有会自动创建
        destdir = "./2022-7-8"

        download_rmrb(year, month, day, destdir)
        print('---文章爬取系统---')
        print("爬取文章完成!")
        print('爬取文章时间为:' + year + '/' + month + '/' + day + '的文章已成功写入文件夹中!')
        print('---文章爬取系统---')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐