位置: 编程技术 - 正文

Node.js环境下编写爬虫爬取维基百科内容的实例分享(node.js编译)

编辑:rootadmin

推荐整理分享Node.js环境下编写爬虫爬取维基百科内容的实例分享(node.js编译),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js编译,nodejs编程,node.js怎么用,node.js编译,nodejs编程,node.js环境搭建,nodejs编程,nodejs编程,内容如对您有帮助,希望把文章链接给更多的朋友!

基本思路思路一(origin:master):从维基百科的某个分类(比如:航空母舰(key))页面开始,找出链接的title属性中包含key(航空母舰)的所有目标,加入到待抓取队列中。这样,抓一个页面的代码及其图片的同时,也获取这个网页上所有与key相关的其它网页的地址,采取一个类广度优先遍历的算法来完成此任务。思路二(origin:cat):按分类进行抓取。注意到,维基百科上,分类都以Category:开头,由于维基百科有很好的文档结构,很容易从任一个分类,开始,一直把其下的所有分类全都抓取下来。这个算法对分类页面,提取子分类,且并行抓取其下所有页面,速度快,可以把分类结构保存下来,但其实有很多的重复页面,不过这个可以后期写个脚本就能很容易的处理。

库的选择开始想用jsdom,虽然感觉它功能强大,但也比较“重”,最要命的是说明文档不够好,只说了它的优势,没一个全面的说明。因此,换成cheerio,轻量级,功能比较全,至少文档一看就能有一个整体概念。其实做到后来,才发现根本不需要库,用正则表达式就能搞定一切!用库只是少写了一点正则而矣。

关键点全局变量设定:

图片下载使用request库的流式操作,让每一个下载操作形成闭包。注意异步操作可能带来的副作用。另外,图片名字要重新设定,开始我取原名,不知道为什么,有的图明明存在,就是显示不出来;并且要把srcset属性清理掉,不然本面显示不出来。

Node.js环境下编写爬虫爬取维基百科内容的实例分享(node.js编译)

广度优先遍历开始没能完全理解异步的概念,以循环方式来做,以为使用了Promise,就已经全转化为同步了,但其实只是能保证交给promise的操作会有序进行,并不能让这些操作与其它的操作有序化!如,下面的代码就是不正确的。

上面的操作看试很正常,但其实(2)会在(1)之间被运行!哪怎么办?我使用递归来解决这个问题。如下示例代码:

正则清理使用正则表达式清理无用的页面代码,因为有很多模式需要处理,写了一个循环统一处理。

运行效果上维基中文是需要FQ的,试运行了一下,抓取 航空母舰 分类,运行过程中,发现了三百左右的相关链接(包括分类页面,这些页面我是只取有效链接,不下载),最终正确的下载了个,手工测试了一些出错链接,发现都为无效链接,显示该词条还未建立,整个过程大概花了不到十五分钟,压缩后近三十M,感觉效果还不错。

源代码

Node.js的Koa框架上手及MySQL操作指南 由Express原班人马打造的koa,致力于成为一个更小、更健壮、更富有表现力的Web框架。使用koa编写web应用,通过组合不同的generator,可以免除重复繁琐的

浅析Nodejs npm常用命令 npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。有了npm,可以很快的找到特定服务要使用的包,进行下载、安装以及管

在Mac OS上安装使用Node.js的项目自动化构建工具Gulp 安装node.js首先需要安装node.js,通常情况下,只需要到Node.js官网下载安装包安装就可以了。不过我可耻的失败了,弹出了如下错误:于是我换成了brew大

标签: node.js编译

本文链接地址:https://www.jiuchutong.com/biancheng/370747.html 转载请保留说明!

上一篇:Node.js环境下JavaScript实现单链表与双链表结构(nodejs调用java)

下一篇:Node.js的Koa框架上手及MySQL操作指南(nodejsapi框架)

  • 增值税发票验真伪怎么验
  • 有关研发支出的账务怎么做?
  • 个人所得税手续费奖励是否交个税
  • 什么时候贷主营业务成本
  • 金蝶多核算项目怎么做
  • 在电子税务里怎么查以前年度亏损数据
  • 企业入统的利弊
  • 营改增后工程税收怎么计算
  • 一般纳税人月销售额多少免征增值税
  • 买断式贴现是什么业务
  • 总包抵扣分包企业所得税
  • 长期债券是指偿还期限超过几个月的债券
  • 跨年多计提社保个人部分怎么调整
  • 去年漏记一笔银行付款怎么办
  • 委托代销收取手续费账务处理
  • 水产养殖公司的经营范围_问答
  • 同一控制下企业合并会产生商誉吗
  • 营改增之前固定资产可以抵扣吗
  • 免税销售额和免税额区别
  • 变更税号后地税个税申报系统还是显示老税号怎么办?
  • 100万的收入要交多少
  • 装卸费的增值税是多少
  • 营改增后房屋出租税率
  • 季度所得税可以不预缴吗
  • 资产减值损失借方余额在利润表怎么填列
  • 房产增值税包含个税吗
  • 新会计准则下建筑业会计科目设置
  • 计提的坏账准备可以转回吗
  • 收到工程结算单,怎么回复不认可
  • 系统设置自动还原
  • 收到的增值税专用发票如何认证
  • php中的函数可以分为哪几种
  • safari浏览器怎么快进
  • win10商店在哪打开
  • PHP:ftp_get_option()的用法_FTP函数
  • 住房贷款利息支出专项附加抵扣
  • 营业外收入的会计要素
  • 工程项目合同签订
  • 仓鼠模拟器3d无限金币中文
  • 跨年度广告费需不需要摊销
  • 注册公司时认缴和实缴时间怎么填
  • 年终奖并入综合所得
  • 公司可以不再提取法定公积金
  • 预处理数据的方法
  • nvm 安装node
  • ps怎么参考线快捷键
  • 其他权益工具投资是什么类科目
  • 企业日常费用支出明细表
  • 以摊余成本计量的金融资产会计处理
  • Apache RocketMQ 5.0 笔记
  • 开具增值税专用发票的承诺书
  • 电子税务局怎么查询开票记录
  • 跨年度少计摊销怎么做账
  • 小规模纳税人开专票需要交税吗
  • 外贸出口企业申报年月怎么填
  • 暂估成本跨年后收到票如何处理,红冲按哪个金额冲
  • 房地产公司预收房款什么时候确认收入
  • 公司基本账户有银行卡吗
  • 现代服务业主要包括哪些类型
  • 货拉拉平台收取费用
  • 在windows 10
  • win7无法运行
  • Ubuntu开启热点
  • Win10技巧:如何开启隐藏的锁屏时间设置项
  • ubuntu下安装win10
  • 手机如何使用windows
  • xp如何更新
  • linux codec
  • win10系统如何查看版本号
  • hyper安装win7
  • win7怎么连接耳机蓝牙
  • js转义字符串
  • android应用结构包括哪些
  • nodejs eventloop
  • Drag and drop in unity
  • jquery弹出框样式大全
  • js会话
  • js prototype constructor
  • 安卓 自动化app
  • 广东税务查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设