如何使用node.js和javascript模仿Facebook的“链接共享”功能

时间:2011-04-14 00:02:30

标签: javascript jquery node.js screen-scraping

所以我想模仿的是Facebook提供的链接共享功能。您只需输入URL,然后FB会自动从目标网站获取图像,标题和简短描述。如何使用node.js和其他可能需要的javascript库在javascript中编程?我找到了一个使用PHP的fopen函数的例子,但我宁愿不在这个项目中包含PHP。

我正在问一个webscraping的例子吗?我需要做的就是从目标网站的meta标签内部检索数据,然后使用CSS选择器获取图像标签吗?

如果有人能指出我正确的方向,那将非常感激。谢谢!

2 个答案:

答案 0 :(得分:2)

查看THIS帖子。它讨论了使用node.js进行抓取。 HERE你有很多关于使用javascript和jquery进行抓取的信息。

也就是说,Facebook实际上并没有猜测标题,描述和预览是什么,他们(至少在大多数情况下)从希望fb用户更容易访问的网站中的元标记中获取该信息。

也许您可以利用现有的元数据来提取标题,描述和img预览。可用元数据的文档为HERE

答案 1 :(得分:1)

是的,需要网页抓取,这是最简单的部分。困难的部分是寻找标题和相关文本和图像的通用算法。

如何刮

您可以使用jsdom在服务器中下载并创建DOM结构,并使用服务器上的jquery来删除它。您可以按照@generalhenry上面的建议在blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejs找到一个很好的教程。

刮什么

我想找到标题的好方法是: -

var h;
for(var i=6; i<=1; i++)
 if(h = $('h'+i).first()){
  break;
 }

现在h会有标题,如果失败则会undefined。替代方案可以是简单地获取页面的title标记。 :)

至于图像。列出该页面上相当大的所有或前几个图像,即过滤掉用于按钮,箭头等的精灵。

在获取远程数据时,请确保ProcessExternalResources标志已关闭。这将确保广告的脚本标记不会污染已获取的页面。

是的,相关文字将在h之后的某些标签中显示。