0

curlとを使用して1つのWebサイトテーブルをスクラップしたいpreg_match

私のURLはhttp://hosts-file.net/?s=Browse&f=EMD

私のカール

$url = 'http://hosts-file.net/?s=Browse&f=EMD';     


        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15") ); 
        curl_setopt($ch, CURLOPT_NOBODY, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $body= curl_exec ($ch);
        curl_close ($ch);

1 つのテーブルを破棄する必要があります。

私のpreg_match機能は以下のとおりです

preg_match_all('/<table class=\"main_normal(.*?)\">(.*?)<\/table>/s',$body,$vv,PREG_SET_ORDER);

ただし、空の配列のみを返します

ガイドしてください

4

1 に答える 1

1

DOMDocument と DOMXPath の例:

$doc = new DOMDocument();
@$doc->loadHTML($body);
$xpath = new DOMXPath($doc);
$links = $xpath->query('/html/body/table/tr/td/table/tr/td/table[@class="main_normal"]/tr/td[2]/a[1]/text()');
foreach($links as $link) {
    echo $link->nodeValue."<br/>"; }

4 行目を相対パスに置き換えることはできますが、効率が低下します。

$links = $xpath->query('//table[@class="main_normal"]/tr/td[2]/a[1]/text()');
于 2013-07-27T12:08:16.997 に答える