Instapaper-подобный алгоритм - PullRequest
       14

Instapaper-подобный алгоритм

34 голосов
/ 26 ноября 2010

Есть ли у кого-нибудь алгоритм, извлекающий содержимое с веб-страницы?как instapaper ?

Ответы [ 4 ]

49 голосов
/ 26 ноября 2010

Операция Instapaper выполняется в два этапа:

  1. Поиск основного блока содержимого на странице (исключая верхние и нижние колонтитулы, меню и т. Д.)
  2. Изэтот блок контента извлекает и форматирует текст

Чтобы найти блок контента (обычно это какой-то элемент блока html, например, div, содержащий текстовое содержимое ключевой страницы)) Instapaper использует алгоритм, очень похожий на тот, который используется readability .Вы можете посмотреть на источник readability.js , чтобы увидеть, что происходит, но по своей сути он пытается найти область на странице с самым высоким отношением текста / ссылок, хотя у него есть и некоторые другие простые оценки.метрики (например, в голове), такие как отношение текста к запятым, параэлементы и т. д.), которые входят в эвристику.

Как только вы определили элемент корневого узла с соответствующим контентом, выВам нужно будет отформатировать его, если вы хотите, вы можете просто извлечь элемент узла, содержащий текст, из исходного документа и вставить его в свой, но на самом деле вы, вероятно, захотите удалить существующие стили и применить свой собственный, длястандартный внешний вид.Если вы хотите выводить только хороший текст, вы можете использовать Jericho's Renderer .

update1 : я должен также упомянуть кое-что еще, что делает Instapaper - что следует за 'ссылки на страницы ( «следующие» или «1», «2», «3» ссылки ) статьи к их заключению, так что фрагмент, который может занимать много страниц в оригинале, будет представленВам как единый документ.

update2 Недавно я наткнулся на это сравнение алгоритмов извлечения текста

6 голосов
/ 21 декабря 2010

есть приложение с открытым исходным кодом, которое анализирует текст статьи с любой веб-страницы

https://github.com/jiminoc/goose/wiki

должно помочь

2 голосов
/ 04 февраля 2012

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

1 голос
/ 26 ноября 2010

Если вы просто хотите, чтобы все содержимое и ни одно из форматирования в Python

>>> from BeautifulSoup import BeautifulSoup
>>> from urllib import urlopen
>>> soup = BeautifulSoup(urlopen("http://www.python.org/").read())
>>> contents = ''.join(soup.findAll(text=True))

делает трюк

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