Допустим, у меня есть несколько HTML-страниц с несвязанных веб-сайтов, но они содержат одинаковую общую информацию. Я хочу извлекать эту информацию гибким образом, т.е. я хочу написать только небольшое количество экстракторов данных для всех страниц (в идеале, одну). Скажем, поля (используя пример блога) author, date, title, text
. Классы тегов HTML, которые их обозначают, могут быть совершенно разными для каждой страницы, но все же отображаться на странице примерно одинаково. Например, возьмите этот пост из CNN и этот пост из Гаукера. Оба содержат одну и ту же информацию — информацию, которую я хочу — где-то на странице, когда она фактически отображается. Есть ли хороший способ извлечь эти данные? Написание отдельных экстракторов — вариант, но не лучший; в наборе данных есть около тысячи стилей документов, которые я хочу использовать.
Извлечение одних и тех же данных из различных HTML-документов
Ответы (1)
Единственный способ сделать это — найти общий элемент на всех этих веб-сайтах (например, они имеют одинаковую структуру DOM, или имеют одинаковый идентификатор, или им предшествует одно и то же содержимое в предыдущем теге, например <h1>
).
В противном случае вам нужно писать разные правила или регулярные выражения для каждого случая.
Если, конечно, вы не напишете настолько интеллектуальный алгоритм, который способен распознавать намерение/значение контента даже с другим HTML, который ни в коем случае не прост и не быстр в написании.
person
Francisco Zarabozo
schedule
18.05.2013
Третий вариант - это то, к чему я стремился. Я подумал, что кто-то думал об этой проблеме раньше и, возможно, решил ее. В идеале они должны были разместить источник в Интернете или описать методы, которые они использовали.
- person jclancy; 19.05.2013
Не то чтобы я в курсе. Но Google, например, делает это, чтобы обнаружить множество вещей и релевантность. Я не знаю, есть ли у них какие-либо проекты с открытым исходным кодом, связанные с этим, но я сомневаюсь в этом. Надеюсь, кто-то еще здесь знает что-то подобное.
- person Francisco Zarabozo; 19.05.2013