原博客:害羞的node爬虫前言学了一段时间node,除了用express写东西,其他的都没做过。突然想写个爬虫玩玩,还是爬一些害羞的东西用模块SuperAgent是一个http库,可以发起get或者post请求。Cheerio可以理解为Node.js版本的jquery,用于通过css选择器从网页中获取数据,使用与jquery相同的fs。一个读写文件的依赖包superagent-logger用于打印http请求信息过程首先我们需要爬取获取网址:http://www.hacg.wiki/wp/anime...其次我们需要爬取获取目标:按如下格式保存在txt中,然后分析我们要爬取什么内容分布:打开控制台title,id,tags下面的爬取地址是:”http://www.hacg.wiki/wp/anime.html/page/"+itime,seed下面的爬取地址是:'http://www.hacg.wiki/wp/'+id+'.html'其次,从上面我们可以看出那个爬取时间和seed的前提是爬取之前的id,所以我们需要先爬取id,然后用id拼凑出seed所在的url。最后,大家可以愉快的爬取知识点或者复习一些知识具体superagent,cheerio看我上面提供的api模块文档链接,使用promise管理异步函数。当我先按照正常的同步思路,使用superagent爬取id所在的url,然后使用superagent调用下面的函数获取种子时,发现获取到的种子始终是空的。后来才意识到这是一个异步函数,不会有序。所以我使用了ES6的promise控件,先执行爬取id,爬取id再爬取seed,使用正则表达式获取seed。如果你访问过这个网站,你会发现它的种子是不规则放置的,并没有存储在固定的x标签中,所以我的做法是获取存储种子的整个$('.entry-content'),然后用正则表达式去匹配整个文本,就可以得到坑了。坑,小问题弄了我半天。磁力链接的大坑。一开始以为磁力链接的长度是40,是大写字母和数字的组合。后来拿不到种子,一度怀疑人生的时候,巧合的发现磁力链接有小写字母,32长,42长。.我一直以为是重定向问题。哎,我为此纠结了好几个小时,不过也让我重新认识了http的运行效果。结果是爬取行数:2700行,爬取种子数:450个代码地址github:llss-crawler具体注释都在代码里。有需要的可以去github下载,运行一下感受爬虫的趣味性。我希望你能给它一个星?结语第一次写爬虫,感觉很有意思,一个很自动化,有种什么都从网上搞定的感觉?(纯的)
