亲爱的同学们,经过本阶段的学习,大家对scrapy爬虫框架的运用是否已熟练掌握了呢?接下来请结合scrapy的相关知识点来完成下面的作业吧!
题目要求:
为了更加高效的进行数据抓取,请大家运用Scrapy框架对目标站点懂球帝资讯网站(http://www.dongqiudi.com/) 中头条、中超、深度、闲情、国际、英超、西甲、意甲、德甲标签下的足球新闻资讯数据进行抓取,并将抓取的数据保存至MongoDB数据库。
数据抓取过程中应当注意以下几点:
(1)合理运用浏览器的开发者模式分析目标站点URL结构、规律和目标抓取数据的定位、网页结构、
(2)抓取的目标信息包含项如下:新闻标题(title)、发表时间(release_time)、作者(author)、新闻内容(content)、抓取时间(crawl_time)、来源URL信息(from_url)、新闻中的图片URL信息(image_urls)
(3)编码时请运用面向对象思想及封装特性优化代码结构
(4)要求抓取足球新闻资讯文本内容和图片数据
(5)分析懂球帝头条标签中可解析最大页码为多少
运行效果:
(1)项目运行效果图
(2)数据存储效果图
一、语言和环境
- 版本
Python3.6或Python3.6以上版本 - 开发工具
Pycharm
二、 程序整体要求
1、 划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理。
2、 类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。
3、 要求Python代码书写、命名符合规范,在代码中添加必要的注释
4、 最终抓取数据效果与提供的页面效果图、结构保持一致,文字大小、背景色也不做统一要求
5、 将作业项目形成压缩文件并提交
三、 思路分析
由题目要求和运行效果,可以分析出项目中需要使用scrapy爬虫框架抓取懂球帝足球新闻资讯
使用scrapy startproject 项目名称(dongqiudi) 创建scrapy抓取项目
Startproject命令产出目录树如下
在dongqiudi项目中创建爬虫解析文件scrapy genspider (解析文件名称)crawl_dongqiudi (域名)dongqiudi.com
创建爬虫解析文件后目录结构如下
Scrapy startproject 项目名称 主要是创建项目结构
Scrapy genspider 爬虫解析文件名称 域名 创建爬虫解析器文件
- 爬虫解析器文件(crawl_dongqiudi):
<1>编辑items.py文件,编辑如下字段
#抓取URL
from_url = scrapy.Field()
#新闻标题
title = scrapy.Field()
#发表时间
release_time = scrapy.Field()
#作者
author = scrapy.Field()
#新闻内容
content = scrapy.Field()
#抓取时间
crawl_time = scrapy.Field()
#图片信息
images = scrapy.Field()
image_urls = scrapy.Field()
image_paths = scrapy.Field()
<2>重写start_requests方法,构造各子页面新闻首页请求
<3>设定实例方法handle_page_response(self,response),在本方法中解析首页请求的返回,解析出新闻标题、新闻资讯详情页URL和发表时间,并发送新闻资讯详情页请求、下一页请求。传递新闻URL,新闻标题,新闻发表时间到handle_detail方法
<3>设定实例方法handle_detail(self,response),解析详情页请求返回,解析出新闻抓取时间,新闻资讯文本内容,作者,新闻图片URL,抓取时间,新闻标题,抓取URL信息,并保存入DongqiudiItem,通过yield传递到pipeline中
<4>编辑pipeline文件中的DongqiudiPipeline类,定义Mongo连接信息,将解析到的懂球帝数据保存到Mongodb中,编辑DongqiudiImagePipeline类,编辑get_media_requests、item_completed、file_path方法,将图片数据保存到本地
<5>编辑middlewares.py中间件文件DongqiudiProxyMiddleware类,设置代理,可选用阿布云代理
<6>编辑settings.py文件,设定USER_AGENT为常规浏览器请求UA,ROBOTSTXT_OBEY为False,CONCURRENT_REQUESTS根据代理请求数设定,IMAGES_STORE图片保存路径,如’./dongqiudi_pic’,开启数据存储pipeline,图片存储pipeline,开启DongqiudiProxyMiddleware代理中间件
<7> 通过创建main.py文件设置scrapy项目启动或在项目中使用scrapy crawl crawl_dongqiudi启动scrapy爬虫项目
规范【10分】
(1)作业所涉及的类都封装在独立的 ".py"文件中
(2)类的定义、类的成员变量命名规范
(3)代码结构要层次分明
(4)Python代码规范及添加适量注释
程序整体运行效果【14分】
程序正常运行,且满足运行效果图和数据存储效果图
爬虫项目分析【20分】
(1)能够正确的分析出待抓取数据之间的结构关系
(2)能够正确分析出《头条》标签下的最大可解析页码
爬虫项目实现【56分】
(1)正确定义待爬取的数据字段
(2)在爬虫文件中正确编写爬虫的逻辑代码并实现
(3)正确定义管道存储文件并链接数据库
(4)利用中间件设置爬虫代理
(5)正确更改配置文件中的相关配置使爬虫正常启动
(6)设置爬虫的启文件