我在FB中有很多帖子。
我想在txt文件中复制所有帖子的文本。
我该怎么办 ?
有什么捷径吗?
我向下滚动,直到所有已加载的帖子,然后按ctrl + a
和ctrl + c
然后粘贴到txt文件,但有些帖子没有完全复制,他们复制到"查看更多"。
如何点击页面中的所有内容?
我在Console中尝试了这个:
$( document ).ready(function() {
document.getElementsByclassName('see_more_link').click();
});
但它没有效果。
任何解决问题的想法??
(对不起,如果我的写作太弱了:(()
答案 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还没有完全被挖出来。