Скребок экрана с Python

Есть ли у Python библиотеки для очистки экрана, которые предлагают поддержку JavaScript?

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

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

Ответы

Ответ 1

Существует множество опций при работе со статическим 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

Ответ 2

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

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

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

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

Ответ 3

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

Здесь вы найдете: http://scrapy.org/

Ответ 4

Selenium, может быть? Он позволяет автоматизировать фактический браузер (Firefox, IE, Safari) с помощью python (среди других языков). Он предназначен для тестирования веб-сайтов, но, похоже, он также может использоваться для очистки. (отказ от ответственности: никогда не использовал его сам)

Ответ 5

Библиотека Webscraping переносит PyQt4 WebView в простой и простой в использовании API.

Вот простой пример, чтобы загрузить веб-страницу, визуализированную с помощью WebKit, и извлечь элемент title с помощью XPath (взятый из URL-адреса выше):

from webscraping import download, xpath
D = download.Download()
# download and cache the Google Code webpage
html = D.get('http://code.google.com/p/webscraping')
# use xpath to extract the project title
print xpath.get(html, '//div[@id="pname"]/a/span')

Ответ 6

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

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

Ответ 7

Я написал учебники по очистке, поэтому перейдите по любой из этих ссылок, чтобы очистить данные с веб-сайта, используя python:

1) Веб-очистка Python с использованием BeautifulSoup https://www.blog.smartspidering.com/python-web-scraping-using-beautifulsoup/

2) Практическая очистка веб-страниц с использованием Python https://www.blog.smartspidering.com/practical-web-scraping-using-python/

Ответ 8

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