新手的node爬虫初体验

原文博客: 羞羞的node爬虫

媒介

学了一阵子node,除了用 express 写东西,就没怎么做过东西
倏忽就想写个 爬虫 来玩一玩,而且照样爬一些羞羞的东西

运用模块

SuperAgent 是个 http 方面的库,能够提议 get 或 post 要求。
cheerio 人人能够明白成一个 Node.js 版的 jquery,用来从网页中以 css selector 取数据,运用体式格局跟 jquery 一样一样的
fs 用于读写文件的一个依靠包
superagent-logger 用来打印http要求信息

流程

起首,我们要爬获得网址是 : http://www.hacg.wiki/wp/anime…
其次,我们要爬获得目的: 以以下花样保存在 txt
《新手的node爬虫初体验》

再其次,剖析我们要爬取的内容散布 : 翻开掌握台

title, id, tags 以下
爬取地点是: “http://www.hacg.wiki/wp/anime.html/page/” + i

《新手的node爬虫初体验》

time, seed 以下
爬取地点是: ‘http://www.hacg.wiki/wp/‘ + id + ‘.html’

《新手的node爬虫初体验》

再再其次,我们能够从上面看出,要爬 time 和 seed 条件是把前边的 id 爬取到,
因而要先爬取 id ,再应用 id 拼集 seed 地点的 url

末了, 就能够来愉快地爬取了

学问点

照样有温习到一些学问
详细superagent,cheerio看上面我供应的 api模块文档链接

应用promise治理异步函数

当我第一次按一般同步头脑用 superagent 先爬取 id 地点 url,
再挪用下面运用 superagent 的函数猎取 seed时,
我发明猎取的 seed 一向是空的。
厥后才意想到这是异步函数,不会按递次举行。
因而我运用了 ES6promise 掌握先实行 爬取 id
爬取完 id 再爬取 seed

用正则表达式猎取seed

假如你有逛过该网站,你会发明他的 seed 是放得毫无规律的,
并非寄存在一个牢固的 x标签 中,
因而我的做法是 把寄存 seed 的整一个 $('.entry-content') 猎取到,
再应用正则表达式整块文本举行婚配猎取

坑点

神坑啊神坑,小题目费了我好长时间

磁力链接的大坑

一开始我认为 磁力链接 这玩意长度为 40 ,都是 大写字母 + 数字 的组合。
厥后在爬取不到 seed ,让我一度疑心人生的时刻
偶合下,发明 磁力链接 有 小写字母,有 32长度 的,有 42长度 的。。
我一向认为是 重定向 题目, 哎,花了好几个钟在这上面纠结
不过也让我小小得从新了解了下 http

运转效果

《新手的node爬虫初体验》
效果爬取行数有: 2700行、
爬取seed数: 450

代码地点

github: llss-crawler
详细解释都在代码里,有须要的小伙伴能够去 github 下下来,跑一下
觉得风趣的爬虫,愿望不怜惜地给个star?

结语

第一次写爬虫,觉得很风趣,一个很自动化,一种互联网啥都 get 获得的觉得
?(贞洁)

    原文作者:塞尔达真好玩
    原文地址: https://segmentfault.com/a/1190000009598820
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞