无法使用CURL,DOMXPath,PHP解析HTML并迭代到数组中

时间:2013-06-05 12:09:49

标签: php curl xpath domxpath

我知道这可能是我缺乏PHP的经验,但我现在已经在同样的事情上工作了5个小时。我好好厌倦了。

我能够返回我正在抓取的10个链接,但我似乎无法弄清楚如何变成数组。

我已经阅读了数百篇关于它是如何且不可能的帖子,并且dom对象无法传递到数组中..我已经尝试了大量不同的解决方法,似乎没有任何工作。

我坚持不懈的主要原因是这篇文章: http://martinsikora.com/parsing-html-pages-using-xpath 他似乎已经完成了它。

感觉我现在已经做了太多工作就放弃了。

还有另一种方法可以实现这一点,我完全不知道了吗?

<?php
    $curl = curl_init('http://www.notgoogle.com/search?q=Las+Vegas+Burgers');
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10' );

    $html = curl_exec($curl);
    curl_close($curl);

    if (!$html) {
        die( "something's wrong!" );
    }

    $dom = new DOMDocument();
    @$dom->loadHTML($html);
    $xpath = new DOMXPath($dom);

    $result = $xpath->query('//h3//a//@href');

    foreach($result as $node)
    {
        echo "{$node->nodeName} - {$node->nodeValue}";
    }

输出:

href - http://vegasmagazine.com/dining/articles/guide-the-very-best-burgers-in-townhref     - http://www.vegasburgerblog.com/href - http://www.yelp.com/c/las-vegas/burgershref - http://grindburgers.com/href - http://www.burger-bar.com/lv_main.phphref - http://www.e2hospitality.com/blt-burger-las-vegas/href - http://www.bachiburger.com/href - http://www.iloveburgers.com/href - http://www.stripburger.com/href - http://www.lbsburger.com/href - http://www.lasvegasweekly.com/news/2013/may/09/10-burgers-eat-right-now/href - http://www.urbanspoon.com/f/18/1708/Las-Vegas/Burger-Jointshref - http://www.gayot.com/restaurants/best-lasvegas-nv-top10-burgers_4lv.htmlhref - http://local.yahoo.com/NV/Las+Vegas/Food+Dining/Restaurants/Burgershref - http://govegas.about.com/od/dining/tp/bestburgers.htmhref - http://www.venetian.com/Las-Vegas-Restaurants/Casual-Dining/I-Love-Burgers/href

虽然我已经从随机文章/建议中做了很多改变。基本上试过PHP手册中提到的每个hack。虽然我是一个初学者,所以我可能错过了一些东西

0 个答案:

没有答案