Симуляция браузера в Google App Engine

1

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

Возможно ли это? Если это так, как вставить библиотеку?
Если нет, можете ли вы объяснить, почему и предоставить альтернативы?

Спасибо.

Update

Я искал еще немного и видел, что scrapy - чистый питон.
Будет ли это работать? Он обрабатывает javascript?

Теги:
scrapy
selenium
google-app-engine
windmill

4 ответа

1
Лучший ответ

Как Selenium, так и ветряная мельница (которые, как полагают, теперь являются unmaintaned), являются контроллерами для реального браузера. Обычно они создают реальный браузер (например, Firefox) в качестве подпроцесса и контролируют его. Я не думаю, что вы можете сделать это в AppEngine. Ближайшая вещь для браузера с чистым кодом, о котором я знаю, htmlunit, помещает эту Java. Насколько я знаю, для Python нет эквивалента.

  • 0
    У меня сложилось впечатление, что они также могут быть использованы в качестве библиотек, как показано здесь packtpub.com/article/web-scraping-with-python-part-2 Это неправда? Я думал, так как он написан на python и JS, может быть, GAE может его запустить ... Вы уверены, что это невозможно сделать? Если действительно htmlunit является единственным решением, есть ли способ использовать его с моим кодом на python, например, как обертку или добавить java вместе с кодом на python?
  • 0
    Для чего это стоит, я недавно слышал, есть привязки Python (через Qt) для webkit. Также бесполезен для GAE, но это немного меньше, чем создание целого реального браузера, он, вероятно, просто запускает движок браузера.
Показать ещё 1 комментарий
3

Любая библиотека "scraping" на языке python вряд ли сможет интерпретировать javascript для вас на appengine, поскольку для этого, вероятно, потребуется какое-то C-расширение (например, привязка к spidermonkey или v8), что было бы против изолированной звуковой системы GAE.

Но, если бы вы отправились на сторону Java, вам, возможно, повезло больше. Я знаю, что вы можете получить Rhino, работающий на AppEngine, с небольшой помощью env.js вы можете эмулировать DOM, быстрый google показывает набор инструментов очистки для Java. Это просто вопрос связывания всего этого.

HtmlUnit Похоже, он пытается сделать именно это, но неясно, насколько он в настоящее время удобен для приложений, поскольку он кажется резьбовое.

  • 0
    Я думаю, что вы имели в виду «интерпретировать», а не «прерывать»
  • 0
    что я сделал :) ... исправлено
1

Я считаю, что и Selenium, и Windmill позволяют вам управлять браузером, а не имитировать. Они ожидают запуска в среде рабочего стола и приводят настоящий браузер, чего вы не можете сделать с App Engine.

Вы можете использовать API API URL-адресов и парсер HTML, например BeautifulSoup, чтобы обрабатывать очистку страницы из App Engine.

  • 2
    Да, это работает для получения статического контента. Но вам нужен интерпретатор JavaScript и полная модель DOM, чтобы получить результирующее динамическое содержимое страницы.
0

Вместо механизма App вы можете использовать EC2. Browsermob и AlertFox работают на EC2 для запуска реальных браузеров для тестирования нагрузки/мониторинга серверов. Технически это то же самое, что соскабливание.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню