2011-10-25 43 views
0

嗨,我在這裏,嘗試爲我們的新粉絲頁面解析一些HTML新聞。 因爲該公司不提供RSS源。Javascript中的HTML解析器

我有一個新的JS文件與包括

function getNews() { 
     y = 0; 
     news = new Array(7); 
     news_content = new Array(5); 
     for (var i = 0; i < news.length; i++) 
     { 
      var table = document.getElementById('news').contentWindow.getElementsByTagName('table')[y]; 
      news_content[0] = table.rows[0].cells[0].getElementsByTagName('img')[0].src; 
      news_content[1] = table.rows[0].cells[1].getElementsByTagName('span')[0].innerHTML; 
      news_content[2] = table.rows[0].cells[2].getElementsByTagName('span')[0].innerHTML; 
      news_content[3] = table.rows[1].cells[0].getElementsByTagName('p')[0].innerHTML; 
      news_content[4] = table.rows[0].cells[0].getElementsByTagName('a')[0].href; 
      //alert(news[0] + "\n" + news[1] + "\n" + news[2] + "\n" + news[3] + "\n" + news[4]); 
      news[i] = news_content[0] + "\n" + news_content[1] + "\n" + news_content[2] + "\n" + news_content[3] + "\n" + news_content[4] + "\n"; 
      y = y + 2; 
     } 
     alert (news[0] + "\n" + news[1] + "\n" + news[2] + "\n" + news[3] + "\n" + news[4]) 
} 

和HTML

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Unbenanntes Dokument</title> 
<script src="test.js"></script> 
</head> 

<body> 
<a href="page.html" onclick="getNews()">Hier klicken</a> 
<iframe id="news" src="http://www.aerosoft-shop.com/list_news.php?cat=fs&lang=de"> 
</body> 
</html> 

最後,如果我填寫Flash源代碼轉換成HTML文件它的工作原理,但有沒有辦法從外部頁面解析?

回答

1

如果你有類似Firebug工具調試代碼,一個errormessage的將返回這樣的: Permission denied to access property 'getElementsByTagName'

這確實不可能在JavaScript訪問指向不同域的IFrame, 甚至沒有子域的域名 (根據對此答案的評論是可能的)。 這裏的問題是,如果網站所有者希望你抓取他的網站或至少給你一個好的,因爲它通常不歡迎從其他來源(交通和可能的版權問題)抓取。

+1

如果在* both *文件中添加'document.domain =「yourdomain.com」;',實際上可以訪問來自不同子域(但是相同域)的內容。 – RoToRa

+0

感謝您的澄清,我編輯了我的答案並指出您的評論。 – Neq