xpath
  • simple-html-dom
  • web-crawler
  • 2014-05-15 65 views 0 likes 
    0

    我一直在嘗試使用簡單的html dom和XPath搜索網站頁面並搜索特定的文本。我已經從網站獲取所有鏈接,並嘗試抓取所有網頁上的鏈接和搜索文本。我想要搜索的文本在html span標籤內。
    但是沒有顯示輸出。使用DOM XPath搜索特定文本

    怎麼回事?

    這裏是我的代碼

    <?php 
    include_once("simple_html_dom.php"); 
    set_time_limit(0); 
    
    $path='http://www.barringtonsports.com'; 
    
    $html = file_get_contents($path); 
    $dom = new DOMDocument(); 
    @$dom->loadHTML($html); 
    $xpath = new DOMXPath($dom); 
    $hrefs = $xpath->evaluate("/html/body//a"); 
    
    for($i = 0; $i < $hrefs->length; $i++){ 
        $href = $hrefs->item($i); 
        $url = $href->getAttribute('href'); 
        $nurl = $path.$url; 
    
        $html1 = file_get_contents($nurl); 
        $dom1 = new DOMDocument(); 
        @$dom1->loadHTML($html1); 
    
        $xpath1 = new DOMXPath($dom1); 
        $name = $xpath1->evaluate("//span[contains(.,'Asics Gel Netburner 15 Netball  Shoes')]"); 
    
        if($name) 
         echo"text found"; 
    } 
    ?> 
    

    我只是想檢查的文本「阿西斯凝膠Netburner 15投球鞋」無論是在網站www.barringtonsports.com與否的任何頁面存在。

    回答

    0

    您正在以交互方式查詢大量網頁。它比服務器允許用於生成頁面的時間要多。

    您可以通過命令行執行此腳本來避免超時或者你可以嘗試配置PHP和Web服務器,使他們有更多的時間到腳本(你可以問上https://serverfault.com/如何做到這一點)

    +0

    如何在命令行中運行腳本? –

    0

    好,首先你要混合簡單的HTML DOM和DOM文檔。只用一個或另一個。由於這是在簡單的HTML DOM標籤開始使用此命令行:

    <?php 
    require_once("./simple_html_dom.php");   # simplehtmldom.sourceforge.net to use  manual 
    $path="http://www.barringtonsports.com"; 
    $html = file_get_html($path); 
    foreach ($html->find('a') as $anchor) { 
        $url = $anchor->href; 
        echo "Found link to " . $url . "\n"; 
        # now see if the link is relative, absolute, or even on another site... 
        $checkhtml = file_get_html($url); 
        # now you can parse that link for stuff too. 
    } 
    ?> 
    

    但實際上,該網站有一個搜索表單,爲什麼不向它發送一個查詢,而不是和讀取結果?

    相關問題