2015-10-19 57 views
0

這是我的問題:從一系列網頁中提取數據最簡單的是什麼?

我有一個電子商務的sitemap.xlm。它包含其產品的所有URL。從這些URL我想獲得產品的名稱(也許它的價格)。我最初的想法是使用谷歌應用程序腳本:

function test() { 

    var response = UrlFetchApp.fetch("http://www.leroymerlin.com.br/emenda-rigido-de-pvc-600cm-plasbil_87821293"); 

    Logger.log(response); 

    var ind; 

    while(ind = /<img src="([^"]*)/.exec(response.getContentText())){ 
    Logger.log(ind[1]); 
    } 

} 

誰的UrlFetchApp.fetch()方法是不可靠的。所以我很快意識到這不是我的最佳選擇。

這是一個非常簡單的任務。我不希望通過任何方式建立一些能夠抓住整個場地的東西。我只想從一組網址中提取一些數據。所以我認爲必須有一個簡單的解決方案。不幸的是,我發現做GoolgeSearch的一切都太複雜了(通過整個站點的爬行器),或者它不是免費的。

我需要一個基於JavaScript的解決方案。如果它是一個基於web的解決方案(我可以在瀏覽器上執行的操作),我也會很棒,但是如果我必須使用一個程序,那也是可以的。或者甚至一個解決方案,使這項工作在谷歌應用腳​​本將爲我工作。

非常感謝。

+0

是什麼讓你覺得刮板很簡單? – charlietfl

回答

1

你可能想給PhantomJS一試。它基本上是一個沒有任何可見窗口的基於webkit的瀏覽器。該API在JS中是nativey,而且相當容易。您甚至可以使用CSS選擇器來獲取有關頁面的特定部分。

1

您可以使用瀏覽器的DOM parserXMLHttpRequest用於加載URL和解析它(重複每個網址):

<script type="text/javascript"> 
// create your DOM element 
var myPage = document.createElement('html'); 
// now load myPage with the html from url 
loadURLHtml("http://myURL"); 

function loadURLHtml(url) 
{ 
    var xmlhttp; 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     // POPULATE HTML into your DOM 
     myPage.innerHTML = xmlhttp.responseText; 
     if (myPage.innerHTML) 
     { 
     // get your element of interest from the loaded html in the DOM 
     myPage.getElementsByTagName('myTag'); 
     } 
    } 
    } 
    xmlhttp.open("GET", url, true); 
    xmlhttp.send(); 
} 
</script> 
相關問題