所以我想模仿的是Facebook提供的链接共享功能。您只需输入URL,然后FB会自动从目标网站获取图像,标题和简短描述。如何使用node.js和其他可能需要的javascript库在javascript中编程?我找到了一个使用PHP的fopen函数的例子,但我宁愿不在这个项目中包含PHP。
我正在问一个webscraping的例子吗?我需要做的就是从目标网站的meta标签内部检索数据,然后使用CSS选择器获取图像标签吗?
如果有人能指出我正确的方向,那将非常感激。谢谢!
答案 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
之后的某些标签中显示。