Скребок экрана с 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 и пользовательских подпрограмм...