爬取服务器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版本,输入网址,新建采集任务
新建任务.png
3.1.2制作翻页循环和每条新闻链接的点击循环
点击循环.png
翻页循环.png
3.1.3规定每个新闻链接的具体采集规则
采集规则.png
3.1.4确定采集流程和数据
采集流程.png
采集格式预览.png
3.1.5采集工具结果界面
采集结果.png
3.1.6错误报告及补充采集结果
经过我们的检查,错误报告中的网页一共有四种类型:
A. 链接网页内部还有嵌套链接,如“120周年校庆”等专题网页链接;
B. 其他格式的网页,如视频、图片、外部网站的链接等。
C. 网页出错,无法打开;
D. 是单独的文章,但可能由于系统出现问题或者文章格式不同(没有标题等)的原因,没有爬取下来。
补充采集结果1.png
我们对出错的每个网页链接进行了单独的第二次数据采集,其中图片、视频等B类格式的网页没有进行采集,最终采集得到的数据结果导出的excel表格部分截图如下:
补充采集结果2.png
最终部分采集结果.png
以上为八爪鱼的部分
3.2使用Python scrapy框架爬取实验方案
3.2.1云服务器配置:为Python安装scrapy
(1)检查当前服务器是否配置了scrapy
(2)退出Python交互,使用yum安装scrapy和部分依赖。
安装scrapy.png
经查询, 解决方法为:
vi /usr/libexec/urlgrabber-ext-down
把头部的python改成和/usr/bin/yum中一样的
修改完成后,再次使用yum安装scrapy:
修改完成后再次安装scrapy.png
3.2.2检查scrapy安装
进入Python交互环境,import scrapy enter,发现引用成功,退出交互环境。
检查安装结果.png
scrapy version enter
查看scrapy版本.png
版本信息查看成功。
至此,云服务器上配置Python scrapy成功。
3.2.3编写代码并进行调试
根据之前八爪鱼的经验可以看出,我们需要采集的实体共有三个:标题、日期和正文(另有一个实体为图片,暂时不做要求)。
scrapy startproject ggnews enter
cd /ggnews/ggnews enter
文件结构1.png
文件结构2.png
编写ggnews.py
编写ggnews.png
3.2.4输入命令进行爬取,得到数据
输入scrapy crawl ggnews -o ggnews.xml
出现以下错误
报错1.png
出现了报错,但显然我们代码里面是有items这个类的。经过查询,这个错误用简单一句话来描述就是: 爬虫的名字跟项目的名字一样,导致最终导入的时候出错。
修改爬虫名字为spidernews.py。虽然名字长了一点,但是看起来很容易理解。
再次执行代码,得到文件ggnews.json
初次爬取结果.png
发现初次爬取的结果为Unicode编码,并不是理想的中文格式。经过查询,需要修改pipelines.py和settings.py这两个文件,使得输出的结果为中文格式。
3.2.5修改pipelines.py和settings.py文件
修改pipelines文件.png
修改settings文件.png
3.2.6解决缩进问题
修改完成之后再次运行命令scrapy crawl spidernews。又出现了新的问题:
报错2.png
经过查询,这是缩进的问题。Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分别的。在编译时会出现这样的错“IndentationError:expected an indented block”说明此处需要缩进,你只要在出现错误的那一行,按空格或Tab(但不能混用)键缩进就行。
修改完成,再次运行命令
第二次爬取结果.png
得到理想的结果。
至此,使用Python scrapy框架进行爬取的过程结束。
4.经验总结
4.1八爪鱼采集器的经验总结
经验总结
由于本次实验只使用了数据采集的功能,因此评价和总结只针对数据采集方面的功能。八爪鱼让数据采集可视化,在完全不懂爬虫代码的情况下,八爪鱼是一个比较方便的网络数据采集工具。根据使用经验,它对公共管理学院网站新闻的爬取速度大概是29条/分钟,数据可以导出为excel、CSV等格式。
但是,它也有一些使用限制。首先是费用方面,它的数据导出是需要积分的,每10条数据一个积分,单次不足10条按10条算,用户首次注册后,它会赠送2000个积分;在采集数据量很小的情况下,可以免费使用,但是在采集数据量很大的时候,需要支付一定费用才能导出数据。其次是使用方面,由于八爪鱼是已经编写好的采集工具,因此在采集数据时使用会受到一定的限制,可能不像直接使用代码一样可以比较自由地规定采集数据的规则细节(比如采集时间段、采集时长等)。
4.2Python scrapy的实验总结
本次实验共爬取到407条数据,然而学院新闻网站上共有458篇新闻。为什么会缺少了51篇,我们到现在还没有找到答案,希望在接下来的学习中可以解决这一问题!在数据采集的过程中,爬取数据的规则和方法是最最最重要的部分,一定要充分利用浏览器的开发者工具,保证路径的严格正确;此外是编码问题和分页问题。由于刚刚接触python,对python的要求还不是很熟悉导致了修改时间很长,在接下来的学习中要尽快适应python的规则。另外还有有足够的耐心和细心,这样才能养出好的爬虫。
爬取服务器public文件夹,数据采集任务——爬取四川大学公共管理学院主页新闻实验报告...相关推荐
- vue-cli3访问public文件夹静态资源的报错解决
今天在项目中使用了public文件夹里的静态资源,在本地测试没有发现问题,但是项目部署到fat服务器却报了404错误. 我发现原因在于我的项目没有部署在域名的根部,而我引用public文件是通过绝对路 ...
- 查看服务器文件夹内存,查看服务器各文件夹内存占用
查看服务器各文件夹内存占用 内容精选 换一换 部署提供可视化.一键式部署服务,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化.本节通过以下五步介绍如何使用部署服务将项目代码部署到云主 ...
- 手机连接服务器数据库文件,手机连接服务器数据库文件夹
手机连接服务器数据库文件夹 内容精选 换一换 GaussDB(DWS)支持使用gs_dump工具导出某个数据库级的内容,包含数据库的数据和所有对象定义.可根据需要自定义导出如下信息:导出数据库全量信息 ...
- java怎么获取服务器文件夹,java获取远程服务器的文件夹
java获取远程服务器的文件夹 内容精选 换一换 工具中所有涉及上传文件功能的,如果需要上传的文件大于1GB或者解压后超过剩余磁盘空间的一半,则需要释放磁盘空间或手动将文件上传至服务器,其他情况可通过 ...
- 云服务器 存放 文件夹,云服务器 存放 文件夹
云服务器 存放 文件夹 内容精选 换一换 云服务器创建后区域固定,不能将云服务器转移到另一个区域,也不能将云服务器转移到另一个帐号.您可以通过镜像迁移方式实现云服务器的跨帐号跨区域迁移.服务器迁移的常 ...
- 如何复制服务器数据库文件大小,如何复制服务器数据库文件夹
如何复制服务器数据库文件夹 内容精选 换一换 您可以通过mongoexport的方式将数据库备份到弹性云服务器上,但不建议将弹性云服务器作为数据库备份空间使用.强烈推荐使用文档数据库实例的备份功能,将 ...
- 让别人查看云服务器的文件夹,让别人查看云服务器的文件夹
让别人查看云服务器的文件夹 内容精选 换一换 本节操作介绍本地MacOS系统主机通过安装"Microsoft Remote Desktop for Mac"工具向Windows云服 ...
- ftp服务器目录创建文件夹权限设置,ftp服务器 创建文件夹权限设置
ftp服务器 创建文件夹权限设置 内容精选 换一换 文件系统创建完成后,用户需在客户端挂载文件共享,在本地共享目录和CSG的文件共享建立映射,通过操作本地的目录实现对CSG共享目录的操作,实现数据实时 ...
- 怎样查看服务器上的文件夹大小写,查看ftp服务器所有文件夹大小写
查看ftp服务器所有文件夹大小写 内容精选 换一换 对于不同业务场景,通过在调整数据库的参数配置,可以有效提升服务器性能. 上传单个或多个本地文件或文件夹至OBS指定路径.待上传的文件可以是任何类型: ...
最新文章
- 一种基于FPGA硬件求解对数的简化方法
- l2_norm c++代码实现
- OpenCV提示—“CV_BGR2HSV”: 未声明的标识符—解决
- UVA 1608 Non-boring sequences(瞎搞)
- Maven排除所有传递依赖项
- sed 解释正则表达式
- 使用selenium爬取csdn博客
- sparksql 操作hive_Spark SQL 物化视图原理与实践
- python中向量长度_线性代数精华——矩阵的特征值与特征向量
- python中局部变量使用
- java君临天下单机游戏_君临天下java单机游戏
- 六度空间 c语言 【详解】
- 前端JS xxxx年xx月xx日转换成页面时间组件xxxx-xx-xx格式
- Linux网络流量监控工具
- 蚂蚁金服AntV开源地理可视化引擎 L7 2.0——聊聊AntV背后那些事
- PHP的strtolower()和strtoupper()函数在安装非中文系统的服务器下可能会将汉字转换为乱码
- 计算机计算乘除法的原理
- 手机助手+for+linux,你的手机助手(com.microsoft.appmanager) - 3.5.8 - 应用 - 酷安
- 设计模式之--中介者模式
- R语言绘图样式设置(符号、线条、颜色、文本属性)