Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Есть два шага к тому, что делает Instapaper:

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

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

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

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

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

Ответ 2

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

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

должен сделать трюк

Ответ 3

Если вам просто нужен весь контент и ни одно из форматирования в Python

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

делает трюк

Ответ 4

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