点击fb中所有帖子的“查看更多”

时间:2014-07-14 21:56:47

标签: javascript jquery facebook node.js console

我在FB中有很多帖子。 我想在txt文件中复制所有帖子的文本。 我该怎么办 ? 有什么捷径吗? 我向下滚动,直到所有已加载的帖子,然后按ctrl + actrl + c然后粘贴到txt文件,但有些帖子没有完全复制,他们复制到"查看更多"。

如何点击页面中的所有内容?

我在Console中尝试了这个:

$( document ).ready(function() {
  document.getElementsByclassName('see_more_link').click();
});

但它没有效果。

任何解决问题的想法??

(对不起,如果我的写作太弱了:(()

2 个答案:

答案 0 :(得分:2)

您可能需要查看此链接:https://www.facebook.com/apps/site_scraping_tos_terms.php

不允许刮痧。如果您想从Facebook获取数据,您应该使用API​​:https://developers.facebook.com/docs/

要获取带有API的Facebook页面的订阅源,请查看以下主题:Facebook PHP SDK 3.0 - How to get my page wall posts at any time?

答案 1 :(得分:0)

我来到这里看怎么做,找不到怎么样。所以我为自己做了。

此功能用于按顺序运行循环(感谢Ivo Wetzel的回答here):

function asyncLoop(iterations, func, callback) {
  var index = 0;
  var done = false;
  var loop = {
    next: function() {
      if (done) {
        return;
      }
      if (index < iterations) {
        index++;
        func(loop);
      } else {
        done = true;
        callback();
      }
    },
    iteration: function() {
      return index - 1;
    },
    break: function() {
      done = true;
      callback();
    }
  };
  loop.next();
  return loop;
}

此另一个用于模拟点击链接(不记得我在哪里看到):

function hacerClic(obj, callback) {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var canceled = !obj.dispatchEvent(evt);
  callback();
}

最后,我们有两次 asyncLoop 运行,一次用于扩展答案

var verRespuestas = document.getElementsByClassName("UFIReplySocialSentenceLinkText");
var i = 0;
asyncLoop(verRespuestas.length, function(loop) {
  hacerClic(verRespuestas[i], function(result) {
    loop.next();
    i++;
  })
}, function() {});

其他扩展'看更多'

var verMas = document.getElementsByClassName("_5v47");
var j = 0;
asyncLoop(verMas.length, function(loop) {
  hacerClic(verMas[j], function(result) {
    loop.next();
    j++;
  })
}, function() {});

注意:如果“看到更多”循环错误,可能是因为DOM还没有完全被挖出来。