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写网络爬虫相关推荐

  1. 用python写网络爬虫 第2版 pd_用Python写网络爬虫(第2版)

    用Python写网络爬虫(第2版)电子书 畅销的Python网络爬虫发实战图书全新升级版,上一版年销量近40000册. 针对Python 3.6版本编写. 提供示例完整源码和实例网站搭建源码,确保用户 ...

  2. Android实战——jsoup实现网络爬虫,糗事百科项目的起步

    Android实战--jsoup实现网络爬虫,爬糗事百科主界面 本篇文章包括以下内容: 前言 jsoup的简介 jsoup的配置 jsoup的使用 结语 前言 对于Android初学者想要做项目时,最 ...

  3. 《用Python写网络爬虫第2版》PDF中英文+代码分析

    互联网包含了迄今为止最有用的数据集,并且大部分可以免费公开访问.但是,这些数据难以复用.它们被嵌入在网站的结构和样式当中,需要抽取出来才能使用.从网页中抽取数据的过程又称为网络爬虫,随着越来越多的信息 ...

  4. python爬虫教程:Python写网络爬虫的优势和理由

    在本篇文章里小编给各位整理了一篇关于选择Python写网络爬虫的优势和理由以及相关代码实例,有兴趣的朋友们阅读下吧. 什么是网络爬虫? 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页 ...

  5. 网页爬虫python代码_《用python写网络爬虫》完整版+源码

    原标题:<用python写网络爬虫>完整版+源码 <用python写网络爬虫>完整版+附书源码 本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中 ...

  6. 《用Python写网络爬虫》——1.5 本章小结

    本节书摘来自异步社区<用Python写网络爬虫>一书中的第1章,第1.5节,作者 [澳]Richard Lawson(理查德 劳森),李斌 译,更多章节内容可以访问云栖社区"异步 ...

  7. 用Python写网络爬虫pdf

    下载地址:网盘下载 作为一种便捷地收集网上信息并从中抽取出可用信息的方式,网络爬虫技术变得越来越有用.使用Python这样的简单编程语言,你可以使用少量编程技能就可以爬取复杂的网站. <用Pyt ...

  8. 网络爬虫python的特点有哪些_为什么写网络爬虫天然就是择Python而用

    关于这个问题,老猿就先从自己的经历讲起吧.很多年前,大约11年前,老猿我接手了一个搜索引擎的网络爬虫,那是一个用C++写的通用搜索引擎的爬虫.C++的语言,多线程的实现,爬虫的运行效率非常高.但是,找 ...

  9. python爬取微博恶评_详解用python写网络爬虫-爬取新浪微博评论

    新浪微博需要登录才能爬取,这里使用m.weibo.cn这个移动端网站即可实现简化操作,用这个访问可以直接得到的微博id. 分析新浪微博的评论获取方式得知,其采用动态加载.所以使用json模块解析jso ...

最新文章

  1. Nginx在windows下常用命令
  2. 【2013年总结】 向着IT前进
  3. 深度学习之三:深度学习基本思想
  4. 林轩田机器学习基石课程笔记1 -The Learing Problem
  5. AJPFX讲解Java 性能优化[4]:关于 finalize 函数
  6. 呼伦贝尔学院计算机宿舍,2020年呼伦贝尔学院新生宿舍环境条件,大一新生男生女生宿舍内部图片【多图】...
  7. qt的qfiledialog怎么判断打开的是不是一张图片_花瓣网画板图片一键导出 设计师速来围观...
  8. exchange无法收发邮件_MAPI session超过Exchange最大限制,邮件发送失败的终极解决方法...
  9. python中filter、map、reduce的区别
  10. java opencv去除干扰线_电子产品硬件研发—提高抗干扰性能的常用方法
  11. AdobeFlashPlayer:GPU加速原理解析
  12. 三星S7edge刷极光ROM的总结_我是亲民_新浪博客
  13. 私有化单机题库管理软件“题库管家”1.3版本正式发布,windows版与mac版下载地址
  14. 手把手教你用GoEasy实现Websocket IM聊天
  15. C语言课设——宿舍管理
  16. mysql conflicts with_mysql安装出现 conflicts with mysql*的解决办法
  17. 年轻人的浮躁,这社会的喧嚣
  18. JetPack—DataStore核心原理与使用
  19. Linux操作系统笔记——Shell程序设计
  20. Scrum Master PSM考试题目分享 Part 4

热门文章

  1. 一场针对手机底层的新圈地运动(程苓峰)
  2. Django 权限Permissions python
  3. Pinia的安装与使用 【全网最简洁】
  4. java 栈和队列实现迷宫代码_算法图解:如何用两个栈实现一个队列?
  5. Multisim 自定义元件库:创建-使用-仿真
  6. ios识别人脸自动拍照_真的逆天?iOS 10相册识别人脸的秘密
  7. 根据c语言的语法规则,下列( )是用户定义的合法标识符,C语言期末复习题附答案...
  8. 微信小程序云开发 初学者入门教程一
  9. 埃斯顿三轴机器人编程_博世力士乐:埃斯顿机器人(手腕+小臂)装配线
  10. 【IDEA】配置翻译插件【Translate】