2013-12-19 50 views
0

我想獲得元標籤數據使用JavaScript(jQuery)和正則表達式。使用JavaScript的正則表達式,從網頁獲取元標籤數據

這是一些元標記。

<meta name="description" content="Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics" /> 
<meta name="title" content="Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics" /> 

我可以使用下面的函數從這些表單中獲取內容。

function getProductInfo(attr) { 
    var m = $("meta[name="+attr+"]"); 
    var content = m.attr("content"); 
    return content; 
} 
if(!title) var title = getProductInfo('title'); 

但有時也有不同形式的meta標籤的像

<meta property="title" content="...."> 
<meta property="og:title" content="...."> 
<meta name="title" description="...."> 

這就是爲什麼我使用正則表達式考慮。但我不知道。 請給我一個小費。謝謝。

+0

至極具有的訪問控制允許-起源:*'。您需要使用php/asp或yql從遠程站點獲取元數據。 – cocco

回答

0

可能是這個..

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

var desc = $('meta[property=description]').attr("content"); 
var title= $("meta[property='og:title]").attr("content"); 

注:顯然,它不喜歡的結腸。我能夠通過使用像這樣的雙引號和單引號來修復它:

1
$('meta').each(function() { 
     console.log($(this).attr('content')); 
    }); 

不需要正則表達式,對於未排序的標記。

function getProductInfo(attr) { 
      $('meta').each(function(index,tag) { 
       if($(tag)[0].attributes[0].textContent == attr) { 
         console.log($(tag)[0].attributes[0].textContent, $(tag)[0].attributes[1].textContent); 
        } 
      }); 
     } 
     getProductInfo('title'); 

這會給你任何東西,它具有名稱/屬性的標題。

1

這裏是你如何通過not using RegEx

做沒有圖書館,純香草JS:

var meta = document.querySelectorAll('meta'); 
for(var i=0;i<meta.length;i++){ 
    var content = meta[i].getAttribute('content'); /* here's the content */ 
} 

http://jsfiddle.net/JA9Yq/

的jQuery:

$('meta').each(function(index,tag){ 
    var content = tag.getAttribute('content'); 
}); 

http://jsfiddle.net/duL6E/

+1

他希望具體的名稱/財產內容,例如'標題' – Holybreath

0

這應該對所有的meta標籤我覺得工作...

/\<meta.*?\>/ 

下面是regexr一個鏈接,這是一個很好的工具來嘗試的事情了

http://gskinner.com/RegExr

但是最好使用@subZero的建議,如果你不需要使用正則表達式,我想。

1

它也可以使用正則表達式:

<meta[^>]+content="([^")]*)" 

結果:用客戶方的語言也允許你只讓自己的網站或網站的元數據

$matches Array: 
(
    [0] => Array 
    (
     [0] => <meta name="description" content="Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics" 
     [1] => <meta name="title" content="Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics" 
    ) 

    [1] => Array 
    (
     [0] => Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics 
     [1] => Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics 
    ) 
) 
+0

謝謝,這是我需要的解決方案的開始。我還需要包括右尖括號:] + content =「([^」)] *)。*?> – jessieloo

相關問題