2014-07-15 43 views
0

給出以下鏈接:(AB)PHP的正則表達式數據廢棄

http://finanzalocale.interno.it/apps/floc.php/certificati/index/codice_ente/1030491450/cod/4/anno/2012/md/0/cod_modello/CCOU/tipo_modello/U/cod_quadro/01 

我怎麼到scrpae Popolazione雷賽德特的價值

我已經嘗試了一些我的史前代碼,但它非常慢,許多數據得到未處理。 例如,如果我處理300個鏈接,大約180/200沒有處理。

任何線索? 謝謝。

回答

0

首先,由於第一個表沒有唯一的標識符(也不是id或class),所以很難實現。 這不適用於每一頁!,這是更多的選項。 你將不得不依賴於其他網頁內容與依賴,我想鏈接的情況下實施,改變.... 我會用https://github.com/fabpot/goutte和實施這樣的事情:

class MyController ... 
public function __construct() 
{ 
    $this->count = 0; //no iteration 
    $this->scraped = array(); 
} 
..... 
public function scrape($url) 
{ 
    $crawler = $client->request('GET', $url); 
    $crawler->filter('table > tbody >tr >td')->each(function ($node) { //find all td`s 
     $this->count++;//increment 
     if($this->count == 1) 
     {//if first td with the text you want... 
      $this->scraped[] = $node->text(); 
     } 
    }); 
} 
+0

感謝。我會看看你的代碼。我正在使用另一個課程,以克服這個問題。其實這些桌子都有相同的班級,所以td也是如此。哦,也許你的意思是沒有特定單元格或行的標識。順便說一句,我正在檢查整個單詞「Popolazione residente(ab。)」。它有效,但它太慢了! – Aptivus

+0

是沒有理想化或沒有模式來識別特定的TD ...一個表ID至少會有幫助,或者是一個動態類(每個TD有類似於第一行的class1 ... class2第二...)任何模式......它必須涉及表演模式...... –