0

在同一个 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;
}
4

2 回答 2

1

采用getElementsByTagName($tag);

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

请参阅此链接getElementsByTagName

于 2012-07-18T11:01:08.600 回答
0

文档中似乎有一个后代选择器的概念

// 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 ;) 试一试]

编辑

还有嵌套选择器

// 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;
}

也应该工作

于 2012-07-18T11:08:10.023 回答