2016-07-24 95 views
0

所以我想做一個PHP抓取工具(供個人使用)。 代碼所做的是顯示「發現」每個eBay拍賣項目發現,不到1小時內結束,但似乎有問題。抓取工具無法獲取所有span元素,「剩餘時間」元素爲a。PHP抓取工具沒有抓取所有元素

simple_html_dom.php被下載並且未被編輯。

<?php include_once('simple_html_dom.php'); 

//url which i want to crawl -contains GET DATA- 

    $url = 'http://www.ebay.de/sch/Apple-Notebooks/111422/i.html?LH_Auction=1&Produktfamilie=MacBook%7CMacBook%2520Air%7CMacBook%2520Pro%7C%21&LH_ItemCondition=1000%7C1500%7C2500%7C3000&_dcat=111422&rt=nc&_mPrRngCbx=1&_udlo&_udhi=20'; 

    $html = new simple_html_dom(); 
    $html->load_file($url); 
    foreach($html->find('span') as $part){ 
     echo $part; 
//when i echo $part it does display many span elements but not the remaining time ones 
     $cur_class = $part->class; 

//the class attribute of an auction item that ends in less than an hour is equal with "MINUTES timeMs alert60Red" 
     if($cur_class == 'MINUTES timeMs alert60Red'){ 
      echo 'found'; 
     } 
    } 
    ?> 

任何答案將是有益的,在此先感謝

+0

echo $ html;通常顯示所有元素,如果沒有任何意義,則表示抱歉,這是我在這裏問的第一個問題。 –

回答

0

望着取出的HTML它好像類alert60Red是通過JavaScript設置。所以你不能找到它,因爲JavaScript永遠不會被執行。

所以只是尋找MINUTES timeMs看起來也很穩定。

<?php 
    include_once('simple_html_dom.php'); 

    $url = 'http://www.ebay.de/sch/Apple-Notebooks/111422/i.html?LH_Auction=1&Produktfamilie=MacBook%7CMacBook%2520Air%7CMacBook%2520Pro%7C%21&LH_ItemCondition=1000%7C1500%7C2500%7C3000&_dcat=111422&rt=nc&_mPrRngCbx=1&_udlo&_udhi=20'; 

    $html = new simple_html_dom(); 
    $html->load_file($url); 
    foreach ($html->find('span') as $part) { 
     $cur_class = $part->class; 

     if (strpos($cur_class, 'MINUTES timeMs') !== false) { 
      echo 'found'; 
     } 
    } 
+0

非常感謝,這讓我煩惱了好幾個小時 –

0

如果一段代碼被包含在另一個php文件中,或者html被嵌入到php中,您的瀏覽器將無法看到它。

所以沒有webcrawl API可以檢測到它。我認爲你最好的選擇是找到simple_html_Dom.php的位置並嘗試以某種方式抓取該文件。你甚至可能無法訪問它。這很棘手。

如果你的API有這個功能,你也可以嘗試通過ID找到?