как найти все <p>теги под заголовком - PullRequest
0 голосов
/ 07 июня 2011

Мне нужно извлечь данные из этой ссылки: http://bit.ly/l1rF5x

Я хочу извлечь все теги p, которые входят в тег <a>, имеющий атрибут rel="bookmark".Мое единственное требование состоит в том, что только <p> теги, которые попадают под этот заголовок, должны быть проанализированы, а оставшиеся должны быть оставлены как есть.Как, например, на этой странице, которую я вам дал, все <p> теги, которые попадают под заголовок "IIFT question paper 2006", должны быть проанализированы.

помогите, пожалуйста.

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

Вы можете попробовать использовать следующее:

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

Переменные результаты будут предупреждены с необходимым содержанием.Пример: http://jsfiddle.net/eGmWw/1/

0 голосов
/ 07 июня 2011

Поскольку вы не предоставили никакой информации о языке / среде, которую хотите использовать для извлечения этой информации, я пошел дальше и взломал что-то вместе с 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...