解析在相同元素上具有两种不同格式的html页面

时间:2012-07-18 10:40:54

标签: php simple-html-dom

在同一个html页面中有两种不同的格式包含:

第一个是:

<div class="gs"><h3 class="gsr"><a href="http://www.example1.com/">title1</a>

第二个是:

<div class="gs"><h3 class="gsr"><span class="gsc"></span><a href="http://www.example2.com/">title2</a>

如何在一个代码中获取可以使用simple_html_dom处理这两种不同格式的链接和标题? 我试过这段代码,但它不起作用:

foreach($html->find('h3[class=gsr]') as $docLink){
   $link = $docLink->first_child();
   echo $link->plaintext;
   echo $link->href;
}

2 个答案:

答案 0 :(得分:1)

使用getElementsByTagName($tag);

它会在dom中找到所有指定的标签......

请参阅此链接getElementsByTagName

答案 1 :(得分:0)

doc开始,似乎有一个后代选择器的概念

// Find all <td> in <table> which class=hello 
$es = $html->find('table.hello td');

然后

foreach($html->find('h3[class=gsr] a') as $link) {
   echo $link->plaintext;
   echo $link->href;
}

应该做你的工作。 [我真的不知道simple_html_dom btw;)只是试一试]

修改

还有嵌套选择器

// Find first <li> in first <ul> 
$e = $html->find('ul', 0)->find('li', 0);

所以

foreach($html->find('h3[class=gsr]') as $docTitle) {
   $link = $docTitle->find('a', 0); //get the first anchor tag
   echo $link->plaintext;
   echo $link->href;
}

也应该有用