如何使用页面URL为多个产品页面提取元标签's

How to extract meta tags for multiple product pages using page URL's?

本文关键字:标签 提取 URL 何使用      更新时间:2023-09-26

大约有200个产品编号和相关的产品URL。我必须使用JavaScript代码提取每个产品的标题和关键字的元标签,并将它们输出到我计算机中的文件中。怎样

示例:产品编号:D2650,具有产品URL:http://www.sigmaaldrich.com/catalog/product/sigma/D2650?lang=en&区域=美国

  • 这与其余199种产品类似。我需要提取所有这些页面的元"关键字"和元"标题"

JS代码的帮助会有所帮助。

根据需要获取元数据的页面集,现有的API可能会很好地提取所需的信息。https://opengraph.io/

这是一个简单的REST API:GET https://opengraph.io/api/1.0/site/<URL encoded site URL>

它适用于使用opengraph标记的页面。对于其他页面,它有时会依赖于获取其他元数据标签信息。您可以在此处使用测试工具测试它在特定页面上可以找到的信息:https://opengraph.io/app/#/调试工具

它在一个项目中对我来说运行得很好,并节省了我连接YQL或进行其他服务器端更改的额外时间。[注意:我和这个产品或它的创建者没有任何关系。我是通过在线研究发现的,并在一个项目中使用了它。]

如果您使用纯javascript,您可以执行以下操作:

var metas = document.getElementsByTagName('meta'); //get all the meta tag elements
//iterate through them
for (i=0; i<metas.length; i++) { 
   if (metas[i].getAttribute("name") == "keywords") { 
     console.log(metas[i].getAttribute("content")); 
   }
  else if (metas[i].getAttribute("name") == "description") { 
     console.log(metas[i].getAttribute("content")); 
   } 
} 

如果您使用Jquery:,上面的代码可能会更简单

var keywords = $('meta[name=keywords]').attr("content");
var description = $('meta[name=description]').attr("content");

我已经根据你分享的url的来源给出了代码片段。您可以根据自己的需要对其进行修改。希望它能让你朝着正确的方向开始。

编辑

我可以理解你是一个初学者,但我不会从头到尾发布整个代码,因为有几种方法可以做到这一点,如果你尝试的话,你应该也可以自己学习。没有那么难。

问题的起点应该是用javascript访问远程源的html。我们通常使用postget请求来执行此操作,但浏览器中通常不允许跨源网络请求。请查看详细阐述此问题的SO回答。

现在,一个简单的解决方法是寻找APIs,它允许您从在线资源中抓取HTML。YQL(雅虎查询语言)就是这样一个工具,可以让您从远程源"查询"html。他们还有一个非常友好的YQL控制台,它可以生成一个URL,您可以在其中直接发出post请求并查询html。它也有很好的文档记录,应该很容易上手。在控制台中尝试以下yql查询:

 select * from html where url='http://www.sigmaaldrich.com/catalog/product/sigma/D2650?lang=en&region=US' and xpath='/html/head/meta'

只要看一下结果,就会发现XMLJSON中只返回了meta标记,并且为yql查询生成了一个自定义URL。因此,只需要对该URL发出get/post请求,然后使用我之前发布的代码,前提是数据以正确格式的XML返回。如果它以JSON的形式返回,您将不得不简单地解析json,这也应该非常简单。

所有这些现在听起来可能真的很复杂,但如果你认真对待,一步一个脚印,你就能自己解决问题。从学习使用YQL控制台开始,用javascript进行网络请求,然后将它们放在一起。这应该是一个有趣的练习。