Как я могу программно получать контент с сайта на регулярной основе? - PullRequest
1 голос
/ 05 ноября 2008

Позвольте мне предисловие, сказав, что мне все равно, на каком языке написано это решение, пока оно работает на Windows. Моя проблема в этом. Есть сайт, на котором есть данные, которые часто обновляются и которые я хотел бы получать через регулярные промежутки времени для последующих отчетов. Для правильной работы сайта требуется JavaScript, поэтому использование wget не работает. Каков хороший способ вставить браузер в программу или использовать автономный браузер для регулярной очистки экрана для этих данных? В идеале я хотел бы получить определенные таблицы на странице, но при необходимости можно прибегнуть к регулярным выражениям.

Ответы [ 10 ]

9 голосов
/ 05 ноября 2008

Вы можете использовать инструменты тестирования веб-приложений, такие как Watir, Watin или Selenium, чтобы автоматизировать браузер для получения значений со страницы. Я уже делал это для очистки данных, и это работает довольно хорошо.

3 голосов
/ 05 ноября 2008

Если JavaScript необходим, вы можете попробовать создать экземпляр Internet Explorer через ActiveX (CreateObject("InternetExplorer.Application")) и использовать его Navigate2(), чтобы открыть веб-страницу.

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate2 "http://stackoverflow.com"

После завершения загрузки страницы (отметьте document.ReadyState) у вас есть полный доступ к DOM и вы можете использовать любые методы для извлечения любого контента, который вам нравится.

2 голосов
/ 05 ноября 2008

Вы можете посмотреть на Beautiful Soup - будучи открытым питоном, он легко программируется. Цитирование сайта:

Beautiful Soup - это синтаксический анализатор Python HTML / XML, разработанный для быстрых поворотных проектов, таких как очистка экрана. Три функции делают его мощным:

  1. Прекрасный суп не захлебнется, если вы дадите ему плохую разметку. Это дает дерево разбора, которое имеет примерно такой же смысл, как и ваш исходный документ. Обычно этого достаточно, чтобы собрать нужные данные и убежать.
  2. Beautiful Soup предоставляет несколько простых методов и Pythonic идиом для навигации, поиска и изменения дерева разбора: инструментарий для разбора документа и извлечения того, что вам нужно. Вам не нужно создавать собственный анализатор для каждого приложения.
  3. Beautiful Soup автоматически конвертирует входящие документы в Unicode и исходящие документы в UTF-8. Вам не нужно думать о кодировках, если только в документе не указана кодировка, а Beautiful Soup не может ее автоматически определить. Тогда вам просто нужно указать оригинальную кодировку.
1 голос
/ 05 ноября 2008

Если вы знакомы с Java (или, возможно, с другим языком, который работает на JVM, таким как JRuby, Jython и т. Д.), Вы можете использовать HTMLUnit; HTMLUnit имитирует полноценный браузер; HTTP-запросы, создание DOM для каждой страницы и запуск Javascript (с использованием Mozilla's Rhino).

Кроме того, вы можете запускать запросы XPath к документам, загруженным в имитированный браузер, имитировать события и т. Д.

http://htmlunit.sourceforge.net

1 голос
/ 05 ноября 2008

Я бы порекомендовал Yahoo Pipes , это именно то, для чего они были созданы. Затем вы можете получить данные о каналах Yahoo в виде RSS-канала и делать с ними все, что захотите.

0 голосов
/ 03 января 2009

Я недавно провел исследование по этой теме. Лучший ресурс, который я нашел, - это эта статья в Википедии , которая дает ссылки на многие движки скрининга экрана.

Мне нужно было что-то, что я мог бы использовать в качестве сервера и запускать его в пакетном режиме, и из моего первоначального исследования я думаю, что Web Harvest довольно хорош в качестве решения с открытым исходным кодом, и я также был впечатлен Screen Scraper , который, кажется, очень многофункциональный, и вы можете использовать его на разных языках.

Существует также новый проект под названием Scrapy , еще не проверил его, но это Python Framework.

0 голосов
/ 05 ноября 2008

Вы можете использовать модуль Perl LWP , с модулем JavaScript . Хотя это может быть не самым быстрым в настройке, оно должно работать надежно. Я бы точно не сделал, чтобы это был ваш первый набег в Perl.

0 голосов
/ 05 ноября 2008

В дополнение к предложению Whaledawg я собирался предложить использовать скребковое приложение RSS (выполнить поиск в Google), и тогда вы можете получить хороший необработанный XML для программного потребления вместо потока ответов. Может даже быть несколько реализаций с открытым исходным кодом, которые дадут вам больше идеи, если вы захотите реализовать себя.

0 голосов
/ 05 ноября 2008

Если у вас Excel, вы сможете импортировать данные с веб-страницы в Excel.

В меню «Данные» выберите «Импорт внешних данных», а затем «Новый веб-запрос».

Когда данные находятся в Excel, вы можете либо манипулировать ими в Excel, либо выводить их в формате (например, CSV), который можно использовать в другом месте.

0 голосов
/ 05 ноября 2008

Дайте Badboy попробовать. Он предназначен для автоматизации системного тестирования ваших веб-сайтов, но вы можете обнаружить, что правила регулярных выражений достаточно удобны, чтобы делать то, что вы хотите.

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