Мне нужны некоторые рекомендации о том, как определить заголовок и содержание просканированных страниц. С тех пор, как я начал работать над этим поисковым роботом, я видел очень странный внешний код.
Как извлечь заголовок и контент из просканированной веб-страницы/статьи?
Ответы (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
Если подумать, это, безусловно, квадру-тетра-гидродубликат. Ах хорошо.
- person Pekka; 08.05.2010
Ну, я не мог найти никаких статей по теме. Я не ищу парсер HTML, я ищу способы отличить заголовок и текст от прочего мусора.
- person HyderA; 08.05.2010
<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
@gAMBOO о боже. Это будет довольно сложно, особенно если учесть, что структура может меняться ежедневно. В таких случаях я бы рекомендовал поговорить с целевым сайтом и посмотреть, нет ли лучших способов получения данных (например, в формате XML или RSS).
- person Pekka; 08.05.2010
RSS ненадежен. Многие из них вообще не поддерживают RSS, а среди тех, которые поддерживают, многие обрезают текст.
- person HyderA; 08.05.2010
@gAMBOOK RSS не является ненадежным - код, который используется для создания некоторых RSS-каналов, таков :) В любом случае, суть в следующем: поговорите с людьми, управляющими сайтом. Практически невозможно извлечь что-либо стоящее из такого спагетти-кода.
- person Pekka; 08.05.2010
Google делает это, почему мы не можем?! =D ... в любом случае, у нас есть более 80 целевых веб-сайтов, и их число продолжает расти. Поэтому говорить с ними, чтобы очистить их код, потому что наш код не может его понять, не может быть и речи.
- person HyderA; 08.05.2010
@gAMBOOKa: Google делает это, потому что они могут позволить себе, чтобы 50 первоклассных людей круглосуточно работали над идеальными решениями проблемы: D Я думаю, вам все равно будет лучше с парсером DOM. Вам просто нужно уточнить правила, например, первый абзац в первой таблице, содержащий
font-weight: bold
, вероятно, является заголовком, если сразу за ним не следует тег xyz
. Я не знаю об автоматическом поиске важного контента как таковом, по крайней мере, как о доступном решении с открытым исходным кодом.
- person Pekka; 08.05.2010