如何在标题</p>下找到所有<p>标签

时间:2011-06-07 07:32:59

标签: html dom

我必须从此链接中提取数据:http://bit.ly/l1rF5x

我想要做的是,我想要提取<a>标记下属性rel="bookmark"的所有p标记。我唯一的要求是只应解析此标题下的<p>个标记,并保留原样。例如,在我给你的这个页面中,应该解析标题为“IIFT问题论文2006”的所有<p>标签。

请帮忙。

2 个答案:

答案 0 :(得分:0)

由于您尚未提供有关要用于提取此信息的语言/环境的任何信息,因此我已经使用jQuery一起破解了某些内容。

(已更新)您可以在此处查看此操作:JS Fiddle

如果您想使用PHP,我建议simplehtmldom

以下是使用simplehtmldom的示例:

$url = 'http://school-listing.mba4india.com/page/7/';

$html = file_get_html($url);

$data = array();

// Find all anchors with the desired rel attribute
foreach ($html->find('a[rel="bookmark"]') as $a) {
    $h4 = $a->parent(); // Get the anchors parent (in this case an h4)

    // We're assuming the next sibling is a p tag here - should test for this here
    $p = $h4->next_sibling(); 

    $content = '';

    // Iterate over all following p tags, until we run out of siblings or find one
    // that isn't a p tag
    while ($p) {
        $content .= (string) $p;
        if ($p->next_sibling() && $p->next_sibling()->tag == 'p') {
            $p = $p->next_sibling();
        } else {
            break;
        }
    }

    $data[] = array('h4' => $h4, 'content' => $content);
}

$br = '<br/>';

foreach ($data as $datum) {
    echo $datum['h4'] . $br . $datum['content'];
    echo $br.$br;
}

有关详情,请参阅Simplehtmldom Documentation

答案 1 :(得分:0)

您可以尝试使用以下内容:

$(function(){
    var results= '';
    $('a[rel="bookmark"] p').each(function(i,e){
        results += $(e).html() + "\n";
    });
        alert(results);
});

将使用所需内容提醒可变结果。 示例:http://jsfiddle.net/eGmWw/1/