Опции для работы с тяжелыми страницами javascript во время чистки экрана - PullRequest
2 голосов
/ 14 октября 2010

Отказ от ответственности здесь: я действительно не программист. Я очень хочу учиться, но мой опыт работы с c64 20 лет назад и пару дней изучения Python.

Я только начинаю с довольно большого (для меня как для начинающего) проекта по очистке экрана. До сих пор я использовал python с mechanize + lxml для просмотра / анализа. Теперь я сталкиваюсь с некоторыми по-настоящему тяжелыми страницами javascript, на которых ничего не отображается без включенного javascript, что означает проблемы для механизации.

Из моих поисков я пришел к выводу, что у меня есть несколько вариантов:

  1. Попытка выяснить, что делает JavaScript, эмулирует это в моем коде (я не совсем знаю, с чего начать.; -))

  2. Использование pywin32 для управления Internet Explorer или чем-то подобным, например, использование webkit-браузера из pyqt4 или даже использование telnet и mozrepl (это кажется действительно сложным)

  3. Переключение языка на perl, поскольку www :: Mechanize кажется более зрелым для per (аддоны и тому подобное для javascript). Не знаю слишком много об этом вообще.

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

Ответы [ 4 ]

1 голос
/ 14 октября 2010

Возможно, вы сможете найти данные, которые вы ищете в другом месте.Попробуйте использовать панель инструментов веб-разработчика в Firefox, чтобы увидеть, что загружается в JavaScript.Возможно, вы можете найти данные в js-файлах.

В противном случае вам, вероятно, придется использовать Mechanize.Здесь вы можете найти два полезных руководства:

http://scraperwiki.com/help/tutorials/python/

0 голосов
/ 22 октября 2010

Для непрограммистов я рекомендую использовать IRobotSoft.Это визуально ориентированный и с полной поддержкой JavaScript.Недостатком является то, что он работает только на Windows.Хорошо, что вы можете стать экспертом методом проб и ошибок, чтобы изучить программное обеспечение.

0 голосов
/ 14 октября 2010

Я использую Chickenfoot для простых задач и Python-webkit для более сложных.Имею хороший опыт работы с обоими.

Вот фрагмент кода для рендеринга веб-страницы (включая выполнение любого JavaScript) и возврата полученного HTML:

class Render(QWebPage):
  def __init__(self, url):
    self.app = QApplication(sys.argv)
    QWebPage.__init__(self)
    self.loadFinished.connect(self._loadFinished)
    self.mainFrame().load(QUrl(url))
    self.app.exec_()

  def _loadFinished(self, result):
    self.html = str(self.mainFrame().toHtml())
    self.app.quit()

html = Render(url).html
0 голосов
/ 14 октября 2010

Четвертым вариантом может быть использование browserjs.

Предполагается, что это способ запуска среды браузера в Mozilla Rhino или некотором другом механизме JavaScript командной строки.Предположительно, вы могли бы (по крайней мере, теоретически) загрузить страницу в этой среде и вывести HTML-код после того, как JS справился с этим.

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

...