Onioncy 2019-06-27
今天给大家分享的是node爬虫,写得不好的大家多关照,指出
背景交代,以下写的demo都是参照《python3网络爬虫开发实战》用node实现的,所以demo的具体思路什么的,大家可以去看书上的介绍,感兴趣的,可以去了解一波。
[x] 3.4 猫眼电影抓取
猫眼电影抓取,没什么难点,非常简单的一个实例。唯一要注意的地方就是正则吧(当然也可以用cheerio库来实现更简单,主要是为了实践下不同的方式)。因为python3有很多现成的方法,所以当用node去写的时候,可能要改变一下,具体的可以看源码let re = /<dd>(?:\s.*?)*board-index.*?>(\d+)<\/i>(?:\s.*?)*data-src="(.*?)"(?:\s.*?)*name"><a.*?>(.*?)<\/a><\/p>\s*?<p class="star">\s*?(.*?)\s*?<\/p>(?:\s.*?)*releasetime">(.*?)<\/p>(?:\s.*?)*integer">(.*?)<\/i>.*?fraction">(.*?)<\/i>/g
// 主要是有一个疑问,下面这段代码主要是判断文件存不存在,如果不存在的话抛异常再写入文件,但是总感觉这种处理方式有问题,希望能找到更合理的方法 try { fs.accessSync(file_path) console.warning('Already Downloaded', file_path) } catch (error) { response.data.pipe(fs.createWriteStream(file_path)) }
[x] 7.4 淘宝商品
这里主要介绍的就是puppeteer是 Google Chrome 团队官方的无界面(Headless)Chrome 工具, 通过puppeteer我们很容易的模拟用户的操作[x] 8 图片验证码识别
这里主要注意的就是node-tesseract库和gm,由于之前一开始用的是tesseract.js库,一直报错可以看下这两个问题issues1和issues2,后来改成node-tesseract就好了,我感觉也是因为墙的原因吧或者是配置的问题// 可能把路径指向本地就好了,具体的没测试,后面再找找问题看 window.Tesseract = Tesseract.create({ workerPath: '/path/to/worker.js', langPath: 'https://cdn.rawgit.com/naptha/tessdata/gh-pages/3.02/', corePath: 'https://cdn.rawgit.com/naptha/tesseract.js-core/0.1.0/index.js', })
后面还会更新其他的爬虫demo,希望本文对你有帮助github地址