Анализ экранных данных с Python

Python имеет библиотеки анализа экранных данных той поддержкой JavaScript предложения?

Я использовал pycurl для простых запросов HTML и HtmlUnit Java для более сложных запросов, требующих поддержки JavaScript.

Идеально я хотел бы иметь возможность сделать все из Python, но я не столкнулся ни с какими библиотеками, которые позволили бы мне делать это. Они существуют?

14
задан Marco 3 February 2010 в 08:11
поделиться

5 ответов

Есть много вариантов при работе со статическим HTML, которые охватывают другие ответы. Однако, если вам нужна поддержка JavaScript и вы хотите остаться на Python, я рекомендую использовать webkit для рендеринга веб-страницы (включая JavaScript), а затем изучить полученный HTML. Например:

import sys
import signal
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebPage

class Render(QWebPage):
    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebPage.__init__(self)
        self.html = None
        signal.signal(signal.SIGINT, signal.SIG_DFL)
        self.connect(self, SIGNAL('loadFinished(bool)'), self._finished_loading)
        self.mainFrame().load(QUrl(url))
        self.app.exec_()

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


if __name__ == '__main__':
    try:
        url = sys.argv[1]
    except IndexError:
        print 'Usage: %s url' % sys.argv[0]
    else:
        javascript_html = Render(url).html
12
ответ дан 1 December 2019 в 09:32
поделиться

Красивый суп по-прежнему, вероятно, ваш лучший выбор.

Если вам нужна «поддержка JavaScript» с целью перехвата запросов Ajax, вам также следует использовать какой-нибудь перехват (например, YATT ), чтобы отслеживать, что это за запросы, а затем имитировать / анализировать их. .

Если вам нужна «поддержка JavaScript», чтобы увидеть, каков конечный результат страницы со статическим JavaScript, то моим первым выбором было бы попытаться выяснить, что делает JavaScript в конкретном случае. -case (например, если JavaScript делает что-то на основе некоторого Xml, тогда просто вместо этого просто анализируйте Xml)

Если вам действительно нужна «поддержка JavaScript» (например, вы хотите увидеть, что такое html после того, как скрипты были запустить на странице), то я думаю, вам, вероятно, потребуется создать экземпляр некоторого элемента управления браузера, а затем прочитать полученный html / dom обратно из элемента управления браузера после его загрузки и нормально проанализировать его с помощью красивого супа. Однако это было бы моим последним средством.

11
ответ дан 1 December 2019 в 09:32
поделиться

Вы можете попробовать Spidermonkey ?

Этот модуль Python позволяет осуществлять реализацию JavaScript? классы, объекты и функции в Python, а также оценка и вызов сценариев и функций JavaScript. Это заимствует тяжело От модуля Perl Module Claes Jacobssen, который, в свою очередь, основан на связывании Perlconect Perl Mozilla.

-1
ответ дан 1 December 2019 в 09:32
поделиться

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

Вот вы идете: http://scrapy.org/

4
ответ дан 1 December 2019 в 09:32
поделиться

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

-2
ответ дан 1 December 2019 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: