Как мне разрешить содержание веб-страницы? - PullRequest
2 голосов
/ 05 августа 2009

Я пишу специальное приложение, похожее на сканер, которое должно извлекать основное содержание различных страниц. Просто чтобы уточнить: мне нужно настоящее «мясо» страницы (если оно есть, естественно)

Я пробовал разные подходы:

  1. На многих страницах есть RSS-каналы, поэтому я могу прочитать их и получить конкретную страницу.
  2. Многие страницы используют метатеги "content"
  3. Во многих случаях объект, представленный в середине экрана, является основным «содержимым» страницы

Однако эти методы не всегда работают, и я заметил, что Facebook отлично справляется с этой задачей (когда вы хотите прикрепить ссылку, они показывают вам контент, который они нашли на странице ссылки )

Итак - у вас есть какой-нибудь совет для меня о подходе, который я просмотрел?

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 августа 2009

На веб-страницах не существует стандартного способа пометить «это мясо». Большинство страниц даже не хотят этого, потому что это облегчает кражу их основного бизнеса. Таким образом, вам действительно нужно написать каркас, который может использовать правила для каждой страницы, чтобы найти нужный вам контент.

0 голосов
/ 05 августа 2009

Ну, ваш вопрос все еще немного расплывчатый. В большинстве случаев «сканер» собирается просто найти данные в Интернете в текстовом формате и обработать их для хранения, анализа и т. Д. «Снимок экрана Facebook» - это совершенно другой зверь.

Если вы просто ищете веб-сканер, есть несколько библиотек, которые могут быть использованы для очень простого обхода DOM веб-страницы и могут захватывать контент, который вы ищете.

Если вы используете Python, попробуйте Beautiful Soup Если вы используете Ruby, попробуйте hpricot

Если вы хотите, чтобы все содержимое веб-страницы было обработано позднее, просто получите и сохраните все под тегом html.

Вот пример BeautifulSoup, чтобы убрать все ссылки со страницы:

require 'hpricot'
require 'open-uri'
doc = Hpricot(open("http://www.stackoverflow.com"))
(doc/"a").each do |link|
  puts link.attributes['href']
end

Редактировать: если вы собираетесь в первую очередь получать контент с одних и тех же сайтов (например, раздел комментариев Reddit, вопросы из StackOverflow, ссылки Digg и т. Д.), Вы можете жестко указать их формат, чтобы ваш сканер мог сказать: Хорошо, я на Reddit, получаю все с классом "вещь". Вы также можете дать ему список вещей по умолчанию для поиска, таких как div с классом / id "main", "content", "center и т. д.

...