采集的时候遇到socket hang up了
发布于 10 年前 作者 igooda 11932 次浏览 最后一次编辑是 8 年前

正在学习express框架做个简单的小网站,临时数据想从网站上抓,所以就用needle 和cheerio做采集,每次采集的颗粒是https://ruby-china.org/topics?page=<page_index>。每一页有15条数据。采集的是[title,content, url, tag, author, author_thumb]. 处于简单考虑把index做成数组。然后forEach. 起初开始一次抓5页,没问题,10页也没问题,后来直接跳到一次抓30页,然后问题就出现了,socet hang up。这个socket hang up是怎么来的?log了一下hang out时的url,浏览器是可以浏览的啊。做采集应该考虑些啥东东,貌似前几天抓糗白一次都是35页,而且都是20条数据。也没出现过问题啊。前辈给指点指点呗。谢了先。。。。

6 回复

之前遇到过socket hang up的问题,记得大概是有地方没有res.end()导致的,不晓得会不会对你有帮助

socket hang up 这个错误是非常神秘的。

有一次我调试到了 socket 模块里面去,然后发现是 nodejs 标准库有问题,但是我没有调试出来。我那问题是超时导致的。

那是网站的防抓取生效了吧,限制了最大连接数,连接进入某个队列不处理了

我也遇到了这个问题,我是一个node server里有API,可以往数据库里写数据。 然后另外写了一个脚本去CALL API,for循环连着call了1000次,就报错 socket hang up了……然后网上找了很久也没找到解决方法,请问这个到底是什么问题呢

同一楼回复,我有次发现用mongodb忘记关闭连接了。。。

控制下并发速度

回到顶部