【爬虫】对面的noder看过来(Puppeteer)

这两天在做一个爬取房屋拍卖数据的作业
https://auction.jd.com/sifa_list.html?childrenCateId=12728
把数据爬出来再转化为自己小程序里的数据,因为表格不好转化,所以转化为图片(顺便体验到了Puppeteer的强大威力,尤其对俺这种前后端+canvas都了如指掌的工程狮来说)
正在写的代码:
http://spider.celwk.com/
爬到的数据生成的JSON: http://spider.celwk.com/products/
渲染成

图片: http://spider.celwk.com/table

暂时只抓取200条的数据左右,一开始要每抓一条要1~2秒,所以要4~5分钟才抓完,后面用到并行(本质就是多线程吧?)Promise.all,同时请求和渲染,只要25~30秒左右就搞定,快了5~10倍!!

不过问题来了,大多时候是正常的,有时候又在爬到一部分(数量很随机)的时候出错,并且错误有时候又不一样,有时错误提示涉及到 socket hang up

一开始以为在本地Mac才会,结果验证了在(阿里云)服务器Ubuntu也会,大多正常,也会时不时中途弹出类似的错误,而且有时候又是到了某一点就一动不动,要强制退出(Mac好像不会):

请教这会是什么问题?多线程冲突?还是Chrome内核(Chromium/Puppeteer)?

如果解决不了这个问题,可能问题也不大,就定时(例如30分钟,一般用crontab而不用自己用node.js去调用子进程吧)执行一次,只要发生概率低于50%,那就也可以??

可能是服务端反爬策略导致的。

做爬虫有风险,小心自己进去。 :sweat_smile:

2 个赞

咱要爬的数据也不会很大量啊,例如”暂时“只爬惠州近几个月的,大概就200条
咱伙伴其实也是参考某个app的,里面的数据可以从淘宝/京东里搜到
IMG_2E372BE77703-1

哈哈,如果爬出事来,一条数据也算大量 :slight_smile:

1 个赞

是不是服务端拒绝长连接啊,要不你抓个包看看?如果是这样的话请求头不用 keep-alive 就可以了

1 个赞

这都是公开信息,也会有风险?最多被封IP吧。

刚开始认真地玩爬虫,咱还没有“抓包”的概念🥲
如果有,请赐咱一本爬虫类的《葵花宝典》:pray:

错误提示看起来不是数据的远程获取错误(除了那个一直没反应但没提醒错误的情况),而是内部的线程之类的

请教你们用什么工具抓取iPhone app(例如美团)和 iMac app(例如Kindle)的请求? 网上搜的好像主要是Charles?

这个工具我用的不多,一般就是用 wireshark 或者 tcpdump 抓抓包,看他的博文感觉区别不大。

玩了两三个小时,感觉还挺好玩的,以后抓取app的数据不难了 :partying_face: ,甚至可能比我用Chrome的Developer Tools 还更好抓!

咱猜是这个原因了,因为平均一秒钟请求几十上百个API,而不是客户端的原因

俺太“单纯”了,提示都有写着 Unhandled ‘error’ event…

只要加上 req.on(‘error’,……) 就不会被“秒”了

这些error的原因估计是因为爬虫短时间大量https请求,服务器主动长连接了?
咱没“刻意”加 keep-alive header(默认有吗?)