Как скрести плохо сформированный HTML

0

Я пытаюсь очистить действительно старую страницу, которая выглядит так, как будто она была построена с помощью FrontPage или даже просто вставлена из документа Word. Он полон тегов шрифтов, которые могут спонтанно останавливаться и начинаться посредине слова или аналогичных элементов в случайном разном глубине дерева.

Я не ищу никаких инструментов, которые могут анализировать плохой XML, я уже использую Html Agility Pack. Когда я говорю плохо сформированный HTML, я имею в виду, что он не выводился из базы данных, не имеет согласованных шаблонов, но на экране это выглядит отлично.

Какие методы и инструменты я могу использовать?

  • 2
    htmlpurifier.org
  • 0
    @happygilmore На каком языке ты скребешься? Если вы в браузере, вы можете установить этот плохо написанный XML как содержимое другого элемента и позволить браузеру уладить его. Если вы используете серверный язык, вы часто можете создать специальный DOM из источника, а затем сканировать его.
Показать ещё 1 комментарий
Теги:
screen-scraping

1 ответ

1

Я хотел бы использовать Cheerio в Nodejs. Он реплицирует тот же api, что и jQuery, что позволяет легко анализировать плохо отформатированный html. Скремблирование с помощью Javascript имеет смысл по многим причинам.

Это пример, взятый из node.io,

var request = require('request')
  , cheerio = require('cheerio')
  , async = require('async')
  , format = require('util').format;

var reddits = [ 'programming', 'javascript', 'node' ]
  , concurrency = 2;

async.eachLimit(reddits, concurrency, function (reddit, next) {
    var url = format('http://reddit.com/r/%s', reddit);
    request(url, function (err, response, body) {
        if (err) throw err;
        var $ = cheerio.load(body);
        $('a.title').each(function () {
            console.log('%s (%s)', $(this).text(), $(this).attr('href'));
        });
        next();
    });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню