Как извлечь заголовок и контент из просканированной веб-страницы/статьи?

Мне нужны некоторые рекомендации о том, как определить заголовок и содержание просканированных страниц. С тех пор, как я начал работать над этим поисковым роботом, я видел очень странный внешний код.


person HyderA    schedule 08.05.2010    source источник


Ответы (1)


Вы можете попробовать простой парсер HTML DOM. Он имеет синтаксис для поиска определенных элементов, похожий на jQuery.

У них есть пример того, как парсить Slashdot:

// Create DOM from URL
$html = file_get_html('http://slashdot.org/');

// Find all article blocks
foreach($html->find('div.article') as $article) {
    $item['title']     = $article->find('div.title', 0)->plaintext;
    $item['intro']    = $article->find('div.intro', 0)->plaintext;
    $item['details'] = $article->find('div.details', 0)->plaintext;
    $articles[] = $item;
}

print_r($articles);
person Pekka    schedule 08.05.2010
comment
Если подумать, это, безусловно, квадру-тетра-гидродубликат. Ах хорошо. - person Pekka; 08.05.2010
comment
Ну, я не мог найти никаких статей по теме. Я не ищу парсер HTML, я ищу способы отличить заголовок и текст от прочего мусора. - person HyderA; 08.05.2010
comment
<td><table cellSpacing=0 cellPadding=0 width="100%" border=0><tbody><tr><td align=right width="95%" style="border-color:#3333DD; font-family:Times New Roman, Times, serif; font-weight:bold;color:#003399; font-size:22px; text-align:center; overflow:hidden;"><b> --- Это начальный тег для заголовка на одном из наших целевых веб-сайтов. - person HyderA; 08.05.2010
comment
@gAMBOO о боже. Это будет довольно сложно, особенно если учесть, что структура может меняться ежедневно. В таких случаях я бы рекомендовал поговорить с целевым сайтом и посмотреть, нет ли лучших способов получения данных (например, в формате XML или RSS). - person Pekka; 08.05.2010
comment
RSS ненадежен. Многие из них вообще не поддерживают RSS, а среди тех, которые поддерживают, многие обрезают текст. - person HyderA; 08.05.2010
comment
@gAMBOOK RSS не является ненадежным - код, который используется для создания некоторых RSS-каналов, таков :) В любом случае, суть в следующем: поговорите с людьми, управляющими сайтом. Практически невозможно извлечь что-либо стоящее из такого спагетти-кода. - person Pekka; 08.05.2010
comment
Google делает это, почему мы не можем?! =D ... в любом случае, у нас есть более 80 целевых веб-сайтов, и их число продолжает расти. Поэтому говорить с ними, чтобы очистить их код, потому что наш код не может его понять, не может быть и речи. - person HyderA; 08.05.2010
comment
@gAMBOOKa: Google делает это, потому что они могут позволить себе, чтобы 50 первоклассных людей круглосуточно работали над идеальными решениями проблемы: D Я думаю, вам все равно будет лучше с парсером DOM. Вам просто нужно уточнить правила, например, первый абзац в первой таблице, содержащий font-weight: bold, вероятно, является заголовком, если сразу за ним не следует тег xyz. Я не знаю об автоматическом поиске важного контента как таковом, по крайней мере, как о доступном решении с открытым исходным кодом. - person Pekka; 08.05.2010