Scrapy框架实现数据采集的详细步骤

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 本文介绍了使用Scrapy框架从宁波大学经济学院网站爬取新闻或公告详情页内容的过程,包括创建Scrapy项目、编写爬虫规则、提取所需信息,并最终将数据存储到Excel文件中的方法和步骤。

需求描述

本项目目标是使用Scrapy框架从宁波大学经济学院网站(nbufe.edu.cn)爬取新闻或公告详情页的内容。具体需求如下:

1、通过遍历多个页面(共55页)构建翻页URL。

2、使用scrapy自带的xpath从每页的HTML结构中提取新闻或公告详情页的链接。

3、对每个详情页,使用BeautifulSoup解析HTML并提取以下信息:

标题、来源、作者、时间、内容、撰稿、摄影、审核。最终将所有提取的信息存储在excel中。

创建scrapy爬虫项目

1. 首先新建一个新的爬虫项目:

Cd 进入创建位置,scrapy genspider 爬虫名称+爬虫网站 创建新的爬虫项目

2. scrapy项目文件

目录结构中的文件说明如下:

​ spiders(文件夹):用于创建爬虫文件,编写爬虫规则。

​ __ init __文件:初始化文件。

​ items文件:用于数据的定义,可以寄存处理后的数据。

​middlerwares文件:定义爬取时的中间件,其中包括SpiderMiddleware(爬虫中间件)、DownloaderMiddleware(下载中间件)

pipelines文件:用于实现清洗数据、验证数据、保存数据。

settings文件:整个框架的配置文件,主要包含配置爬虫信息,请求头、中间件等。

scrapy.cfg文件:项目部署文件,其中定义了项目等配置文件路径等相关信息。

爬虫制作

zyj.py文件:爬取数据

(1)Spider定义和配置:

name属性定义爬虫的名字为“zyj”。

start_urls属性包含了爬虫的初始URL列表,这里是宁波财经学院的主页。

(2)start_requests方法:

该方法用来生成初始请求。通过一个循环,生成从第1页到第55页的请求URL,并通过scrapy.Request发送请求。

(3)parse方法:

这个方法是对每个请求返回的响应进行处理。首先输出响应内容以供调试。

使用XPath选择器来找到包含目标数据的div标签,调试输出找到的div数量。遍历每个div,构造详情页的URL,并生成请求,同时将请求传递给parse_zyj方法进行详细处理。

(4)parse_zyj方法:

该方法负责解析详情页的内容。首先创建一个zyjItem实例来存储抓取的数据。使用BeautifulSoup解析响应的HTML内容。提取详情页的标题、来源、作者、时间、内容等信息,并处理可能出现的数据缺失情况,输出相应的调试信息。通过对特定标签的进一步解析,提取内容创作人、摄影和审核信息。如果解析失败,则将相应字段设为“N/A”。最后,输出解析后的item,并通过yield将其传递给Scrapy的Item Pipeline。

(5)网页定位

右键点击审查,定位标题列表页的标题以及详情页地址。如下图所示

定位详情页标题及文章来源作者时间等,div属性class的值为main_show_bt md

定位详情页内容,div属性class的值为main_show_nr md

最后使用beautifulsoup解析详情页,提取内容等信息。详细代码如下

item.py文件:

setting.py文件:将下面的语句解开注释。设置了默认的请求头(HTTP headers),用于每次请求时附加到HTTP请求中。主要包括以下两个字段:

Accept: 指定客户端可以处理的内容类型。text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8表示客户端可以接受HTML、XHTML、XML格式的响应,权重分别为0.9和0.8,表示HTML、XHTML和XML优先级较高。

User-Agent: 用于标识请求的客户端(浏览器)。这里设置了一个常见的浏览器用户代理字符串,模拟的是Google Chrome浏览器。这可以帮助避免一些网站因为识别到爬虫而进行的访问限制。

cookies: 添加了一个Cookies字段,用于在请求中携带特定的Cookies信息。这可能用于保持会话或通过某些网站的防爬虫措施。

另外还配置了Scrapy的项目管道(Item Pipelines),用于处理抓取到的项目(items)。配置的结构为字典形式,键为管道的路径,值为管道的优先级。zyj.pipelines.ZyjPipeline: 这是定义在项目中的一个管道类,路径是zyj.pipelines中的ZyjPipeline类。该管道类负责处理、清理或存储爬虫抓取到的数据。

300: 这是该管道的优先级。Scrapy允许定义多个管道,优先级数值越低,优先级越高。这里设置的300表示中等优先级。

Pipeline.py文件:将数据进行处理并保存到zyj.xlsx文件

运行。通过编程的方式启动名为zyj的Scrapy爬虫,等效于在命令行手动输入scrapy crawl zyj命令。这种方法适用于在Python脚本中启动爬虫,可以方便地集成到其他Python代码中,或用于调试和自动化任务。

结果

相关文章
|
1月前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
111 6
|
2月前
|
数据采集 中间件 开发者
Scrapy爬虫框架-自定义中间件
Scrapy爬虫框架-自定义中间件
64 1
|
2月前
|
数据采集 中间件 Python
Scrapy爬虫框架-通过Cookies模拟自动登录
Scrapy爬虫框架-通过Cookies模拟自动登录
120 0
|
5月前
|
数据采集 存储 中间件
高效数据抓取:Scrapy框架详解
高效数据抓取:Scrapy框架详解
|
1月前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
80 4
|
2月前
|
数据采集 中间件 数据挖掘
Scrapy 爬虫框架(一)
Scrapy 爬虫框架(一)
58 0
|
2月前
|
数据采集 XML 前端开发
Scrapy 爬虫框架(二)
Scrapy 爬虫框架(二)
51 0
|
4月前
|
数据采集 数据可视化 数据挖掘
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
本文介绍了一个基于Python和Django框架,使用Scrapy进行去哪儿网数据采集与分析的项目,包括实现登录注册功能、MD5加密以及通过可视化大屏展示分析结果的综合系统。
基于python django的scrapy去哪儿网数据采集与分析,包括登录注册和可视化大屏,有md5加密
|
4月前
|
数据采集 中间件 调度
Scrapy 爬虫框架的基本使用
Scrapy 爬虫框架的基本使用
|
4月前
|
数据采集 存储 中间件
Python进行网络爬虫:Scrapy框架的实践
【8月更文挑战第17天】网络爬虫是自动化程序,用于从互联网收集信息。Python凭借其丰富的库和框架成为构建爬虫的首选语言。Scrapy作为一款流行的开源框架,简化了爬虫开发过程。本文介绍如何使用Python和Scrapy构建简单爬虫:首先安装Scrapy,接着创建新项目并定义爬虫,指定起始URL和解析逻辑。运行爬虫可将数据保存为JSON文件或存储到数据库。此外,Scrapy支持高级功能如中间件定制、分布式爬取、动态页面渲染等。在实践中需遵循最佳规范,如尊重robots.txt协议、合理设置爬取速度等。通过本文,读者将掌握Scrapy基础并了解如何高效地进行网络数据采集。
251 6