实战nodejs写网络爬虫
2019独角兽企业重金招聘Python工程师标准>>>
自己是写.Net程序出身的,但是这个生态圈……不说了都是泪,一时兴起玩玩nodejs,想着拿什么练个笔,于是就准备复刻一下以前自己写的爬虫,自己一直在用的都是C#.Net写的Winform程序,nodejs正好解决了跨平台的问题。
网络上开源的爬虫类应用基本处于两强吧,python遥遥领先,java也有一席之地,python写的爬虫我是拒绝的,我就是饿死……也不用黑乎乎没有gui的程序,但是等等啊,nodejs也是么有界面的,可以用起web服务器形式,然后走本地浏览器,还有现在外面很火的nw.js和electron两大解决方案,都内置了Chromium内核浏览器,不过正准备动手的时候发现了Google Carlo,Google的这个项目解绑了浏览器,可以让程序调用系统中安装的Chrome,感觉很接近当年的IE核心的WebBrowser控件了有木有,而且还跨平台。
说说写爬虫本身吧,写爬虫其实真没什么难的,关键就是要在浏览器上把从登录到下载所做的一系列操作,记录好控制台上显示的关键的网络传输信息,包括请求的url地址、类型(GET、POST、HEAD等)、头部数据(Referer、Range等)、查询数据(a=b&c=d这样的),然后记录返回信息,对于登录来说,一般就是一次POST请求,注意重定向即可,登录之后保存cookie用于后续的访问。对于爬取和分析页面,按照不同的情况有不同的解决方案,一般对于非脚本生成的页面,直接抓取html然后进行解析,但是有些页面是用脚本动态生成的,你用程序爬取的代码和用浏览器打开的完全不同,这就需要你观察这个页面内有哪些请求,往往可以从一些json请求中获取最原始不需要解析就能获取的宝贵信息。最后没什么好说的啦,获取到资源的url就用力下载就行啦,注意有些大文件服务器会强制要求分块下载,设置请求头部的header中的Range信息即可。
回到nodejs平台,nodejs拥有不弱于python的三方类库,如果对飙的话估计要吵几天几夜,不过对于我们来说够用好用就行了,nodejs下http下载一般用request类库,解析网页用cheerio,这两个就足够了,我为了减少硬盘读写用了memorystream。代码库托管在github:https://github.com/wildwind3325/pied,可以用于爬取Pixiv、Inkbunny和Ex绅士网站的图片、动图、flash和漫画,虽然功能只有Winform版本的5%都不到……代码很简单,纯粹当示例了。
其实刚开始后端http请求我用的是SuperAgent,后来发现这个类库虽然年纪和request差不多,但是后端bug太多,遂弃用了。SuperAgent在遇到302重定向时居然直接抛异常,在请求ex绅士时不知什么原因总是404……
转载于:https://my.oschina.net/viperwhip/blog/2988369
实战nodejs写网络爬虫相关推荐
- 用python写网络爬虫 第2版 pd_用Python写网络爬虫(第2版)
用Python写网络爬虫(第2版)电子书 畅销的Python网络爬虫发实战图书全新升级版,上一版年销量近40000册. 针对Python 3.6版本编写. 提供示例完整源码和实例网站搭建源码,确保用户 ...
- Android实战——jsoup实现网络爬虫,糗事百科项目的起步
Android实战--jsoup实现网络爬虫,爬糗事百科主界面 本篇文章包括以下内容: 前言 jsoup的简介 jsoup的配置 jsoup的使用 结语 前言 对于Android初学者想要做项目时,最 ...
- 《用Python写网络爬虫第2版》PDF中英文+代码分析
互联网包含了迄今为止最有用的数据集,并且大部分可以免费公开访问.但是,这些数据难以复用.它们被嵌入在网站的结构和样式当中,需要抽取出来才能使用.从网页中抽取数据的过程又称为网络爬虫,随着越来越多的信息 ...
- python爬虫教程:Python写网络爬虫的优势和理由
在本篇文章里小编给各位整理了一篇关于选择Python写网络爬虫的优势和理由以及相关代码实例,有兴趣的朋友们阅读下吧. 什么是网络爬虫? 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页 ...
- 网页爬虫python代码_《用python写网络爬虫》完整版+源码
原标题:<用python写网络爬虫>完整版+源码 <用python写网络爬虫>完整版+附书源码 本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中 ...
- 《用Python写网络爬虫》——1.5 本章小结
本节书摘来自异步社区<用Python写网络爬虫>一书中的第1章,第1.5节,作者 [澳]Richard Lawson(理查德 劳森),李斌 译,更多章节内容可以访问云栖社区"异步 ...
- 用Python写网络爬虫pdf
下载地址:网盘下载 作为一种便捷地收集网上信息并从中抽取出可用信息的方式,网络爬虫技术变得越来越有用.使用Python这样的简单编程语言,你可以使用少量编程技能就可以爬取复杂的网站. <用Pyt ...
- 网络爬虫python的特点有哪些_为什么写网络爬虫天然就是择Python而用
关于这个问题,老猿就先从自己的经历讲起吧.很多年前,大约11年前,老猿我接手了一个搜索引擎的网络爬虫,那是一个用C++写的通用搜索引擎的爬虫.C++的语言,多线程的实现,爬虫的运行效率非常高.但是,找 ...
- python爬取微博恶评_详解用python写网络爬虫-爬取新浪微博评论
新浪微博需要登录才能爬取,这里使用m.weibo.cn这个移动端网站即可实现简化操作,用这个访问可以直接得到的微博id. 分析新浪微博的评论获取方式得知,其采用动态加载.所以使用json模块解析jso ...
最新文章
- Nginx在windows下常用命令
- 【2013年总结】 向着IT前进
- 深度学习之三:深度学习基本思想
- 林轩田机器学习基石课程笔记1 -The Learing Problem
- AJPFX讲解Java 性能优化[4]:关于 finalize 函数
- 呼伦贝尔学院计算机宿舍,2020年呼伦贝尔学院新生宿舍环境条件,大一新生男生女生宿舍内部图片【多图】...
- qt的qfiledialog怎么判断打开的是不是一张图片_花瓣网画板图片一键导出 设计师速来围观...
- exchange无法收发邮件_MAPI session超过Exchange最大限制,邮件发送失败的终极解决方法...
- python中filter、map、reduce的区别
- java opencv去除干扰线_电子产品硬件研发—提高抗干扰性能的常用方法
- AdobeFlashPlayer:GPU加速原理解析
- 三星S7edge刷极光ROM的总结_我是亲民_新浪博客
- 私有化单机题库管理软件“题库管家”1.3版本正式发布,windows版与mac版下载地址
- 手把手教你用GoEasy实现Websocket IM聊天
- C语言课设——宿舍管理
- mysql conflicts with_mysql安装出现 conflicts with mysql*的解决办法
- 年轻人的浮躁,这社会的喧嚣
- JetPack—DataStore核心原理与使用
- Linux操作系统笔记——Shell程序设计
- Scrum Master PSM考试题目分享 Part 4
热门文章
- 一场针对手机底层的新圈地运动(程苓峰)
- Django 权限Permissions python
- Pinia的安装与使用 【全网最简洁】
- java 栈和队列实现迷宫代码_算法图解:如何用两个栈实现一个队列?
- Multisim 自定义元件库:创建-使用-仿真
- ios识别人脸自动拍照_真的逆天?iOS 10相册识别人脸的秘密
- 根据c语言的语法规则,下列( )是用户定义的合法标识符,C语言期末复习题附答案...
- 微信小程序云开发 初学者入门教程一
- 埃斯顿三轴机器人编程_博世力士乐:埃斯顿机器人(手腕+小臂)装配线
- 【IDEA】配置翻译插件【Translate】