基于Scrapy框架的网络爬虫系统的设计与实现
发布时间:2023-10-06 10:51
百度公司是一家专注于搜索引擎和人工智能方向的大型企业。从最开始的搜索引擎主业,到后来业务向各个方面拓展,现在已有数万人的研发团队,作者所在的部门是质量工程中心,共有400人左右。作者的团队是涉及网络舆情数据和语料库方向的任务,专门负责爬虫技术方面的工作。该网络爬虫系统基于Scrapy框架,针对国内流行的即时消息网站微博和脉脉,同时结合作者所在部门的项目要求,用于高效地获取到网站的舆情语料数据,其中涉及了分布式爬虫、布隆过滤器算法、调度策略、反爬虫策略、Redis缓存、代理池服务、Cookies池服务以及模拟登录等关键技术,这些技术的应用显著地提升了爬取的性能。该系统主要分为中间件模块、实体管道模块、爬虫业务模块、调度器模块、代理池模块以及Cookies池模块六大部分。其中,中间件模块包括代理池中间件、UA中间件、Cookies池中间件、Retry中间件等,专门对请求对象进行处理。实体管道模块包括微博实体管道和脉脉实体管道两大部分,其主要功能包括字段信息定义、数据清洗、数据去重、格式化、存储到数据库等功能。爬虫业务模块包括模拟登录、Request请求、Response解析、数据对象创建、...
【文章页数】:97 页
【学位级别】:硕士
【文章目录】:
致谢
摘要
ABSTRACT
1 引言
1.1 项目背景及意义
1.1.1 技术背景
1.1.2 项目意义
1.2 国内外同类技术情况
1.3 文章组织架构
1.4 本章小结
2 相关技术介绍
2.1 爬虫工作原理
2.2 Scrapy框架介绍
2.2.1 Scrapy的组成架构
2.2.2 Scrapy的工作流程
2.2.3 Scrapy的扩展工具
2.3 Bloom Filter算法
2.4 Selenium与WebDriver
2.5 Redis缓存
2.6 Proxy代理技术
2.7 MongoDB数据库
2.8 XPath与BeautifulSoup
2.9 Faker
2.10 本章小结
3 系统的需求分析
3.1 需求综述
3.2 系统的可行性分析
3.2.1 技术的可行性分析
3.2.2 经济的可行性分析
3.2.3 实践操作的可行性分析
3.3 系统的功能性需求
3.3.1 业务逻辑部分
3.3.2 实体管道层部分
3.3.3 中间件层部分
3.3.4 调度器部分
3.3.5 服务层部分
3.4 系统的非功能性需求
3.5 本章小结
4 系统的概要设计
4.1 系统的设计原则与目标
4.2 系统体系结构设计
4.3 系统功能结构设计
4.4 数据库设计
4.5 本章小结
5 系统的详细设计与实现
5.1 代理池服务的设计与实现
5.1.1 获取模块的设计
5.1.2 检测模块的设计
5.1.3 存储模块的设计
5.1.4 接口模块的设计
5.2 Cookies池服务的设计与实现
5.2.1 存储模块的设计
5.2.2 生成模块的设计
5.2.3 验证模块的设计
5.2.4 接口模块的设计
5.3 中间件模块的设计与实现
5.3.1 User-Agent中间件
5.3.2 Cookies中间件
5.3.3 Proxy中间件
5.3.4 Retry中间件
5.4 实体管道模块的设计与实现
5.4.1 微博的实体管道
5.4.2 脉脉的实体管道
5.5 微博爬虫业务解析模块
5.6 脉脉爬虫业务解析模块
5.7 调度器模块的设计与实现
5.7.1 去重模块的设计
5.7.2 调度模块的设计
5.8 本章小结
6 系统测试
6.1 单元测试
6.2 功能性测试
6.3 非功能性测试
6.4 测试总结
6.5 本章小结
7 结论与展望
7.1 工作总结
7.2 工作展望
参考文献
作者简历
学位论文数据集
本文编号:3851712
【文章页数】:97 页
【学位级别】:硕士
【文章目录】:
致谢
摘要
ABSTRACT
1 引言
1.1 项目背景及意义
1.1.1 技术背景
1.1.2 项目意义
1.2 国内外同类技术情况
1.3 文章组织架构
1.4 本章小结
2 相关技术介绍
2.1 爬虫工作原理
2.2 Scrapy框架介绍
2.2.1 Scrapy的组成架构
2.2.2 Scrapy的工作流程
2.2.3 Scrapy的扩展工具
2.3 Bloom Filter算法
2.4 Selenium与WebDriver
2.5 Redis缓存
2.6 Proxy代理技术
2.7 MongoDB数据库
2.8 XPath与BeautifulSoup
2.9 Faker
2.10 本章小结
3 系统的需求分析
3.1 需求综述
3.2 系统的可行性分析
3.2.1 技术的可行性分析
3.2.2 经济的可行性分析
3.2.3 实践操作的可行性分析
3.3 系统的功能性需求
3.3.1 业务逻辑部分
3.3.2 实体管道层部分
3.3.3 中间件层部分
3.3.4 调度器部分
3.3.5 服务层部分
3.4 系统的非功能性需求
3.5 本章小结
4 系统的概要设计
4.1 系统的设计原则与目标
4.2 系统体系结构设计
4.3 系统功能结构设计
4.4 数据库设计
4.5 本章小结
5 系统的详细设计与实现
5.1 代理池服务的设计与实现
5.1.1 获取模块的设计
5.1.2 检测模块的设计
5.1.3 存储模块的设计
5.1.4 接口模块的设计
5.2 Cookies池服务的设计与实现
5.2.1 存储模块的设计
5.2.2 生成模块的设计
5.2.3 验证模块的设计
5.2.4 接口模块的设计
5.3 中间件模块的设计与实现
5.3.1 User-Agent中间件
5.3.2 Cookies中间件
5.3.3 Proxy中间件
5.3.4 Retry中间件
5.4 实体管道模块的设计与实现
5.4.1 微博的实体管道
5.4.2 脉脉的实体管道
5.5 微博爬虫业务解析模块
5.6 脉脉爬虫业务解析模块
5.7 调度器模块的设计与实现
5.7.1 去重模块的设计
5.7.2 调度模块的设计
5.8 本章小结
6 系统测试
6.1 单元测试
6.2 功能性测试
6.3 非功能性测试
6.4 测试总结
6.5 本章小结
7 结论与展望
7.1 工作总结
7.2 工作展望
参考文献
作者简历
学位论文数据集
本文编号:3851712
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3851712.html