【爬虫v9.js】程序在运行过程中卡顿,必须手动ctrl c退出怎么破?



  • 老师v9.js的代码,每次运行都会出现卡顿的情况,查询mongodb发现只获取了几百条数据,然后爬虫就停止工作,必须手动ctrl c才能退出。nodejs的log如图:
    0_1474924741643_upload-469688ef-ce06-48dd-a47c-85976c2aac0e
    请问有没有什么好的调试方式可以定位到代码出现问题的地方?

    另外,v9.urls.js中的genURLs函数对每个区的小区页面都循环100次,但并不是所有区都有100页,譬如浦东有100页、闵行只有77页、宝山只有48页,所以该函数中j的循环次数应该由每个区的页面数决定。我想在findALLURL函数return url之后去分别请求这几个url,抓取包含最大页面的那个tag,即 $(’.page-box’).find(‘a:nth-last-child(2)’),这样的话代码中request.get()抓取所有区的url后还需要再request.get()这些url页面上需要的页面数的元素。对于这样的逻辑,代码的框架应该怎么搭?可以request.get()中再嵌套request.get()吗?



  • 后半部分的问题已解决,这样优化后能多抓取几百条。但是程序卡顿的问题依旧在,只是每次退出在重启后会多爬取一些数据,还是不能全部跑完。实在不知道哪里出了问题,求解debug和调优方式。感谢。



  • @youne1012【爬虫v9.js】程序在运行过程中卡顿,必须手动ctrl c退出怎么破? 中说:

    后半部分的问题已解决,这样优化后能多抓取几百条。但是程序卡顿的问题依旧在,只是每次退出在重启后会多爬取一些数据,还是不能全部跑完。实在不知道哪里出了问题,求解debug和调优方式。感谢。

    哈罗!
    其实程序员写程序的时间可能真的没有debug的时间多><

    一般来说, debug有两种方式, 一个是step through(就是看代码一步一步的运行), 一个就是靠log了.
    第一个方法不太适用于我们遇到的情况, 所以我只能推荐多加log. 等到卡顿的时候, 看看log中有没有线索.
    抱歉可能回答不是很有用, 但是debug的确就是这样也没有太多捷径可走. 当然, 如果你能够reduce scope, 就是排除一些绝对没有问题的区域, 那么就可以针对另外一些区域做详细的log和调查.
    有时候认真读一遍代码, 也对debug有帮助.

    期待你的update!


 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待