2014-05-15 1 views
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

많은 웹 페이지를 대화식으로 쿼리하고 있습니다. 서버에서 페이지를 생성하는 데 사용할 수있는 시간보다 오래 걸립니다. ,

당신은 시간 제한을 피하기 위해 명령 줄에서이 스크립트를 실행할 수 있습니다 또는 당신은 그들이

+0

명령 줄에서 스크립트를 실행하는 방법은 무엇입니까? –

0

음을 (이 작업을 수행하는 방법 https://serverfault.com/에 요청하실 수 있습니다) 스크립트에 더 많은 시간을 줄 수 있도록 PHP와 웹 서버를 구성하는 시도 할 수 있습니다 먼저 간단한 HTML DOM과 DOM Document를 혼합하고 있습니다. 둘 중 하나만 사용하십시오. 이 명령 줄에서이와 함께 간단한 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. 
} 
?> 

하지만 실제로는 그 웹 사이트가 검색 양식을 가지고, 왜 그냥 대신에게 쿼리를 보내고 결과를 읽을 수 없습니다?