关于浏览器端的JavaScript爬虫内存溢出的问题

  1. 我的需求是实时获取文字直播网站的数据(秒级同步,不使用频繁请求的方式)
  2. 我的做法是打开目标网站,在控制台执行js代码。具体步骤:先获取第一条数据,数据id存到js变量,定时0.1秒获取列表第一条数据,判断这条数据跟之前的js变量是否一致,一致则跳过,不一致则将当前数据存进数组,并把这条数据id赋值到js变量(充当下一次的第一个id),递归往下获取下一个兄弟dom,一直到找到最初的id号为止。然后把数据通过ajax发到我的后台。
  3. 我的问题是运行几分钟到十几分钟火狐浏览器会出现“某个网页让您的浏览器变慢了。您想如何处理呢”,谷歌浏览器则直接卡死不动。我有三个目标网站,其中一个能正常运行几天,另外两个则出现以上问题。

火狐截图

代码地址:github

希望好心的朋友能帮我运行分析一下代码。

阅读 2.7k
2 个回答

既然它们是用的ajax方法更新页面,建议直接找到它们网站怎么更新数据的地方或者地址,然后自己加一个钩子。。。


补充:因为目标页面“使用websocket更新数据的,不定时断线重连,参数加密更换”,所以最终的方法是使用了MutationObserver1来监视列表元素的变化


  1. https://developer.mozilla.org...
新手上路,请多包涵

如果要发送到后台的话 建议使用后台去抓取 或者像一楼说的 直接抓取源站点请求的地址 js频繁请求 可能是你后台处理速度慢 或者次数过多会导致卡死

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题