2012-07-08 56 views
0

我一直试图通过这个html网页来获取位于嵌套相当深的代码的下面部分内的商业名称。所有的ID都是独一无二的。我尝试过使用simple_html_dom,但遇到了麻烦。我对PHP非常陌生,但是一个爱好学习者都是一样的,所以在正确的方向上我希望我能够解决这个问题。从复杂的html页面获取内容?

我想要使用的网页为http://yellow.co.nz/yellow+pages/funeral+home/New+Zealand?page=1&stageName=Composite+search&activeSort=name-asc&suppressMobileListings=false

<div class="result standard"> 
    <div class="resultBody"> 
     <div class="listingMain"> 
      <div class="vcard"> 
       <a class="fn openPreview"> 
        <span>Biz Name</span> 
+0

您正在寻找'DOMDocument',不'simple_html_dom'。 – hakre 2012-07-08 23:55:20

+0

[强大的,成熟的HTML解析器的PHP]的可能的副本(http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php) – hakre 2012-07-08 23:56:07

回答

0

当我过去(通过任意层次来我的目标节点挖掘)也有类似的问题,我发现的XPath是最有帮助的解决方案:

PHP DOM Xpath documentation

它可以让你用一个非常简单的XPath查询立即靶向感兴趣的节点。

1

您可以尝试Goutte,并完成类似

use Goutte\Client; 

$client = new Client(); 
$crawler = $client->request('GET', 'http://yellow.co.nz/yellow+pages/funeral+home/New+Zealand?page=1&stageName=Composite+search&activeSort=name-asc&suppressMobileListings=false'); 

$businessNames = array(); 
$crawler->filter('vcard > fn > span')->each(function($node, $i){ 
    $businessNames[] = $node->text(); 
}); 
+0

下载的Goutte,但我得到错误“致命的错误:在第13行的D:\ wamp \ www \ GrabListings \ index.php中找不到类'Goutte \ Client'“ – user1510709 2012-07-09 00:11:38

+0

抱歉,我的错误忘记了require_once('goutte.phar'); – user1510709 2012-07-09 00:15:00

+0

你可以在这个语句中结合id和class:'$ crawler-> filter(“DSContents> mainContent> searchResultsForm> resultsCont> cbParent> result> resultBody> listingMain> vcard> fn> span”) - > each(function($节点,$ i){$ businessNames [] = $ node-> text(); });'' – user1510709 2012-07-09 00:20:43