爬取服务器public文件夹,数据采集任务——爬取四川大学公共管理学院主页新闻实验报告...

1.实验目的和要求

1.1实验目的

爬取公共管理学院网站上的所有新闻,了解和熟悉网络信息采集的相关技术。

1.2实验要求

用任何可以用的方法,爬取四川大学公共管理学院(http://ggglxy.scu.edu.cn/)上所有的新闻,包括“新闻标题、新闻发布时间、新闻正文”三个字段。我们尝试过的方法有八爪鱼数据采集工具、Python爬虫代码。

2.实验环境

2.1八爪鱼数据采集工具

八爪鱼采集器是一个云采集服务平台,提供数据采集、数据分析等功能,是可视化的图形操作采集器。它的基础功能如简易采集、自定义采集等可以免费使用。本次实验使用的是八爪鱼7.0版本的自定义采集功能,采用本地采集的方法。

2.2使用Python scrapy框架爬取

本次实验使用的Python版本为2.7.14,安装完成Scrapy。采用服务器采集的方法。

3.实验方案

3.1八爪鱼采集器实验方案

3.1.1登录八爪鱼7.0版本,输入网址,新建采集任务

8231ccde6ece

新建任务.png

3.1.2制作翻页循环和每条新闻链接的点击循环

8231ccde6ece

点击循环.png

8231ccde6ece

翻页循环.png

3.1.3规定每个新闻链接的具体采集规则

8231ccde6ece

采集规则.png

3.1.4确定采集流程和数据

8231ccde6ece

采集流程.png

8231ccde6ece

采集格式预览.png

3.1.5采集工具结果界面

8231ccde6ece

采集结果.png

3.1.6错误报告及补充采集结果

经过我们的检查,错误报告中的网页一共有四种类型:

A. 链接网页内部还有嵌套链接,如“120周年校庆”等专题网页链接;

B. 其他格式的网页,如视频、图片、外部网站的链接等。

C. 网页出错,无法打开;

D. 是单独的文章,但可能由于系统出现问题或者文章格式不同(没有标题等)的原因,没有爬取下来。

8231ccde6ece

补充采集结果1.png

我们对出错的每个网页链接进行了单独的第二次数据采集,其中图片、视频等B类格式的网页没有进行采集,最终采集得到的数据结果导出的excel表格部分截图如下:

8231ccde6ece

补充采集结果2.png

8231ccde6ece

最终部分采集结果.png

以上为八爪鱼的部分

3.2使用Python scrapy框架爬取实验方案

3.2.1云服务器配置:为Python安装scrapy

(1)检查当前服务器是否配置了scrapy

(2)退出Python交互,使用yum安装scrapy和部分依赖。

8231ccde6ece

安装scrapy.png

经查询, 解决方法为:

vi /usr/libexec/urlgrabber-ext-down

把头部的python改成和/usr/bin/yum中一样的

修改完成后,再次使用yum安装scrapy:

8231ccde6ece

修改完成后再次安装scrapy.png

3.2.2检查scrapy安装

进入Python交互环境,import scrapy enter,发现引用成功,退出交互环境。

8231ccde6ece

检查安装结果.png

scrapy version enter

8231ccde6ece

查看scrapy版本.png

版本信息查看成功。

至此,云服务器上配置Python scrapy成功。

3.2.3编写代码并进行调试

根据之前八爪鱼的经验可以看出,我们需要采集的实体共有三个:标题、日期和正文(另有一个实体为图片,暂时不做要求)。

scrapy startproject ggnews enter

cd /ggnews/ggnews enter

8231ccde6ece

文件结构1.png

8231ccde6ece

文件结构2.png

编写ggnews.py

8231ccde6ece

编写ggnews.png

3.2.4输入命令进行爬取,得到数据

输入scrapy crawl ggnews -o ggnews.xml

出现以下错误

8231ccde6ece

报错1.png

出现了报错,但显然我们代码里面是有items这个类的。经过查询,这个错误用简单一句话来描述就是: 爬虫的名字跟项目的名字一样,导致最终导入的时候出错。

修改爬虫名字为spidernews.py。虽然名字长了一点,但是看起来很容易理解。

再次执行代码,得到文件ggnews.json

8231ccde6ece

初次爬取结果.png

发现初次爬取的结果为Unicode编码,并不是理想的中文格式。经过查询,需要修改pipelines.py和settings.py这两个文件,使得输出的结果为中文格式。

3.2.5修改pipelines.py和settings.py文件

8231ccde6ece

修改pipelines文件.png

8231ccde6ece

修改settings文件.png

3.2.6解决缩进问题

修改完成之后再次运行命令scrapy crawl spidernews。又出现了新的问题:

8231ccde6ece

报错2.png

经过查询,这是缩进的问题。Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分别的。在编译时会出现这样的错“IndentationError:expected an indented block”说明此处需要缩进,你只要在出现错误的那一行,按空格或Tab(但不能混用)键缩进就行。

修改完成,再次运行命令

8231ccde6ece

第二次爬取结果.png

得到理想的结果。

至此,使用Python scrapy框架进行爬取的过程结束。

4.经验总结

4.1八爪鱼采集器的经验总结

经验总结

由于本次实验只使用了数据采集的功能,因此评价和总结只针对数据采集方面的功能。八爪鱼让数据采集可视化,在完全不懂爬虫代码的情况下,八爪鱼是一个比较方便的网络数据采集工具。根据使用经验,它对公共管理学院网站新闻的爬取速度大概是29条/分钟,数据可以导出为excel、CSV等格式。

但是,它也有一些使用限制。首先是费用方面,它的数据导出是需要积分的,每10条数据一个积分,单次不足10条按10条算,用户首次注册后,它会赠送2000个积分;在采集数据量很小的情况下,可以免费使用,但是在采集数据量很大的时候,需要支付一定费用才能导出数据。其次是使用方面,由于八爪鱼是已经编写好的采集工具,因此在采集数据时使用会受到一定的限制,可能不像直接使用代码一样可以比较自由地规定采集数据的规则细节(比如采集时间段、采集时长等)。

4.2Python scrapy的实验总结

本次实验共爬取到407条数据,然而学院新闻网站上共有458篇新闻。为什么会缺少了51篇,我们到现在还没有找到答案,希望在接下来的学习中可以解决这一问题!在数据采集的过程中,爬取数据的规则和方法是最最最重要的部分,一定要充分利用浏览器的开发者工具,保证路径的严格正确;此外是编码问题和分页问题。由于刚刚接触python,对python的要求还不是很熟悉导致了修改时间很长,在接下来的学习中要尽快适应python的规则。另外还有有足够的耐心和细心,这样才能养出好的爬虫。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值