从网站

时间:2016-09-28 14:38:32

标签: facebook facebook-graph-api web-scraping

我想从网页上检索嵌入式Facebook评论:

http://www.example.com/sub_page_wFBcomments

我所知道的

我可以使用Facebook图形API直接从facebook.com检索Facebook评论。 当评论嵌入在Facebook页面所有者的网站中时,情况并非如此。

我尝试了什么

使用图形API时:

https://graph.facebook.com/v2.7/[apikey]/?key=value&access_token=[MyToken]

    {
       "link": "http://www.example.con/",
       "name": "Example.com",
       "namespace": "examplecom",
       "id": "[apikey]"
    }

当天真地适应评论时: [link] https://graph.facebook.com/v2.7/[apikey]/posts/?key=value&access_token=[MyToken]

它不起作用,我明白了:

 "message": "(#100) Tried accessing nonexisting field (posts) on node type (Application)",
 "type": "OAuthException",

Facebook页面没有评论/帖子显示。 (但在做[apikey] = walmart时,会下载facebook页面的评论) 所以我推断出一些东西丢失了:api如何知道在哪里寻找评论?

我走了多远:

Stackoverflow建议使用类似的东西 /comments/?ids= "link of page" 这不起作用:

https://graph.facebook.com/v2.7/[apikey] / comments /?ids = http://www.example.com/sub_page_wFBcomments&access_token=[MyToken]

"message": "(#100) Tried accessing nonexisting field (comments) on node type (Application)",

备注 删除" / coments"从上一个网址中我恢复了.json中的正文,但没有注释。

问题:

是否可以让api查找评论? http://www.example.com/sub_page_wFBcomments (而不是来自www.facebook.com/exemplecom)

感谢您的帮助。

修改

在@CBroe评论之后,我已经尝试了关于示例的常见问题解答

http://www.oneminuteinfo.com/2015/06/how-to-use-fb-api-to-get-fan-page-posts.html

    https://graph.facebook.com/v2.6/?fields=og_object{comments}&id=http://www.url.com&access_token=[MyToken]

    {
      "og_object": {
         "id": "1305277432850801"
      },
       "id": "http://www.oneminuteinfo.com/2015/06/how-to-use-fb-api-to-get-fan-page-posts.html"
    }

缺少评论:(

编辑2

感谢@TomSanders的回答。我尝试了你的建议,它仍然没有用,我使用url检索的id不是给出评论的那个,我自己解释一下:

来自

https://graph.facebook.com/v2.3/[myUrl]/comments?limit=100&access_token=[myToken]

我明白了:

{
   "og_object": {
      "id": "813606582071724",
      "description": "the description",
      "title": "the title",
      "type": "website",
      "updated_time": "2016-10-15T16:57:59+0000"
   },
   "share": {
      "comment_count": 0,
      "share_count": 0
   },
   "id": "myUrl"
}
将URL地址从http更改为https时,

备注1 " comment_count"变成= 141。

备注2 使用此请求在下一步中获取的ID我检索空数据:{" data":[]}。

备注3(!!)当右键点击网站的facebook插件时我通过寻找targetid = 1065663070140433得到facebook id。然后,当我把它插入api我得到(一些)评论!

我在这里做错了什么?我需要灯。

2 个答案:

答案 0 :(得分:0)

不幸的是,Facebook Open Graph API文档的文档有时不正确。此外,API还有Facebook承认但不会修复的错误。

由于您似乎希望获得在使用Facebook评论插件的第三方网站上发布的评论,我建议您先从获取object_id开始:

GET 'https://graph.facebook.com/v2.7/' + public_url + '?access_token=' + fb_token

下一个按object_id查询注释(文档错误地指出您可以将url用作id):

GET 'https://graph.facebook.com/v2.7/' + fb_object + '/comments?access_token=' + fb_token + '&limit=100&order=reverse_chronological'

对于单个object_id,这将为您提供最多约9800条评论,即使有更多。我还没有办法获得额外的评论。

对于某些object_id的上述请求将导致500错误,没有明显的原因。在这些情况下,您可以添加额外的" filter = stream"过滤。这将最多为您提供1000条评论:

GET 'https://graph.facebook.com/v2.7/' + fb_object + '/comments?access_token=' + fb_token + '&limit=100&filter=stream&order=reverse_chronological'

根据Facebook文档,其他过滤器和属性是可选的。但是,在实践中,您可能无法获得裸查询的结果,但在添加其他属性时会得到结果。

答案 1 :(得分:0)

要通过json来获取json的Facebook插件评论,请按以下网址调用:

https://graph.facebook.com/v7.0/?id=[your url here]&fields=og_object{comments{message,from{name,%20picture}}}

用您的网址替换[your url here]

Here is an example