Python имеет библиотеки анализа экранных данных той поддержкой JavaScript предложения?
Я использовал pycurl для простых запросов HTML и HtmlUnit Java для более сложных запросов, требующих поддержки JavaScript.
Идеально я хотел бы иметь возможность сделать все из Python, но я не столкнулся ни с какими библиотеками, которые позволили бы мне делать это. Они существуют?
Есть много вариантов при работе со статическим 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
Красивый суп по-прежнему, вероятно, ваш лучший выбор.
Если вам нужна «поддержка JavaScript» с целью перехвата запросов Ajax, вам также следует использовать какой-нибудь перехват (например, YATT ), чтобы отслеживать, что это за запросы, а затем имитировать / анализировать их. .
Если вам нужна «поддержка JavaScript», чтобы увидеть, каков конечный результат страницы со статическим JavaScript, то моим первым выбором было бы попытаться выяснить, что делает JavaScript в конкретном случае. -case (например, если JavaScript делает что-то на основе некоторого Xml, тогда просто вместо этого просто анализируйте Xml)
Если вам действительно нужна «поддержка JavaScript» (например, вы хотите увидеть, что такое html после того, как скрипты были запустить на странице), то я думаю, вам, вероятно, потребуется создать экземпляр некоторого элемента управления браузера, а затем прочитать полученный html / dom обратно из элемента управления браузера после его загрузки и нормально проанализировать его с помощью красивого супа. Однако это было бы моим последним средством.
Вы можете попробовать Spidermonkey ?
Этот модуль Python позволяет осуществлять реализацию JavaScript? классы, объекты и функции в Python, а также оценка и вызов сценариев и функций JavaScript. Это заимствует тяжело От модуля Perl Module Claes Jacobssen, который, в свою очередь, основан на связывании Perlconect Perl Mozilla.
SCRAPY - это быстрый высокий уровень соскабливания экрана и веб-каркас, используемый для ползания веб-сайтов и извлечения структурированных данных с их страниц. Он может быть использован для широкого спектра целей, от добычи данных для мониторинга и автоматического тестирования.
Вот вы идете: http://scrapy.org/
Я не нашел ничего для этого. Я использую комбинацию красивых подпрограмм и обычаев ...