自己是写.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……

nodejs爬虫实战_实战nodejs写网络爬虫相关推荐

  1. 【爬虫】手把手教你写网络爬虫(2)

    介绍 大家好!回顾上一期,我们在介绍了爬虫的基本概念之后,就利用各种工具横冲直撞的完成了一个小爬虫,目的就是猛.糙.快,方便初学者上手,建立信心.对于有一定基础的读者,请不要着急,以后我们会学习主流的 ...

  2. python编写爬虫的步骤-python学习: 写网络爬虫程序的三个难点

    写爬虫,是一个非常考验综合实力的活儿.有时候,你轻而易举地就抓取到了想要的数据:有时候,你费尽心思却毫无所获. 好多Python爬虫的入门教程都是一行代码就把你骗上了"贼船",等上 ...

  3. 基于python的网络爬虫编程_基于Python的网络爬虫程序设计

    程序设计 ●Program Design 基于 Python的网络爬虫程序设计 网络 信 息量 的迅 猛 增 长,对 如何从海量的信息中准确的搜索 到用户需要的信息提 出了极大的 挑战.网络爬 虫具有 ...

  4. 基于python的网络爬虫技术_基于python的网络爬虫技术的研究

    龙源期刊网 http://www.qikan.com.cn 基于 python 的网络爬虫技术的研究 作者:刘文辉 李丽

  5. 基于python的网络爬虫系统_基于Python对网络爬虫系统的设计与实现.pdf

    基于Python对网络爬虫系统的设计与实现.pdf 日期: 2020-08-02 01:17:51 人气: - 基于Python对网络爬虫系统的设计与实现软件研发与应用SOFTWARE DEVELOP ...

  6. pythonscrapy爬虫安装_零基础写python爬虫之爬虫框架Scrapy安装配置

    前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...

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

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

  8. python二手交易平台代码_PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)...

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...

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

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

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

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

最新文章

  1. 蠕虫mysql_警惕!MySQL蠕虫再度对Windows发动攻击
  2. 1057. Stack (30)
  3. 雅马哈发电机换机油教程_奥迪老A4B7 EA113 1.8T发动机严重烧机油大修彻底解决
  4. python爬虫基础教程115_Python解析网页源代码中的115网盘链接实例
  5. POJ3522Slim Span(最大边与最小边差值最小的生成树)
  6. Netty @Sharable的使用
  7. mysql 脚本 linux_MySQL的一些功能实用的Linux shell脚本分享
  8. SlideringDrawer的使用(抽屉效果)
  9. RePlugin 主程序接入指南
  10. python矢量裁剪栅格代码_Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性...
  11. python不正确的关系字符_Python系列之 - 字符编码问题
  12. 省选专练【网络流24题】最小路径覆盖问题
  13. C++--第8课 - 类中的封装
  14. javascript 常用插件库
  15. 两个mysql 数据库表结构_MYSQL对比两个数据库表结构
  16. 计算机的自带拍视频教程,电脑如何录制视频并剪辑
  17. Install YouTube-DL – A Command Line Video Download Tool for Linux
  18. 2010年新版俏皮话
  19. Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗?
  20. 2021年“上海区块链周”参会随感(二)2021-04-12

热门文章

  1. 38译码器和416译码器
  2. 关于虚拟机,影子系统和游戏机器码的问题
  3. win7语言文件夹c盘什么位置,Win7系统C盘中ProgramData文件夹在哪?
  4. Oracle openv目录,nub备份安装目录/openv由来
  5. 实现WEB打印的几种方法
  6. Hibernate的配置文件配置
  7. visio 2003 问题
  8. python判断手机号码是否正确_基于python的-使用正则表达式验证手机号
  9. 速读-对抗攻击的弹性异构DNN加速器体系结构
  10. Viewpage+Fragment