Механизировать модуль для GAE

1

Я попытался заставить модуль механизации работать с GAE, но не повезло. Я использовал последнюю версию механизации и версии, которые являются GAE конкретными здесь Python Mechanize + код GAEpython.

Я хочу сделать это, чтобы зайти на сайт и отправить форму.

Пример кода

import mechanize

def mech(uname,passw,txtto,msg):
    br = mechanize.Browser()
    br.open("http://example.com")
    br.select_form(nr=0)

    br["username"]= uname
    br["password"]= passw
    # br.form

    response = br.submit()
    br.select_form(nr=0)
    # print br.form

    br["txt"] = txtto 
    br["message"] = msg

    br.submit()
    br.back()

С модулем механизации я получаю

'str' object has no attribute 'fileno' 

и с gaemechanize я получаю

app.mechanize.ClientForm.ControlNotFoundError

ControlNotFoundError: no control matching name 'txt'

Код проверяется и работает вне gae, так что это не проблема. Если это помогает, я использую платформу kay.

  • 0
    Пожалуйста, добавьте пример кода, иначе вам очень сложно помочь.
  • 0
    отредактировал мой пост, чтобы лучше описать проблему
Показать ещё 3 комментария
Теги:
google-app-engine
mechanize-python

1 ответ

0

Похоже, вы пытаетесь сделать это из приложения Python GAE. Существует множество ограничений на то, что может сделать код безопасности GAE non- flex- (например, ограничения на обход других процессов и т.д.), Которые не существуют в облачных функциях Google. Я рекомендую вам попробовать это из облачной функции Google. Пока еще нет официальной поддержки python для GCF, есть github, который позволит вам развернуть код Python в GCF.

Мне удалось получить какой-то аналогичный код автоматизации браузера для работы в GCF с помощью плагина Node.js chromium remote, поэтому я бы подумал, что GCF будет работать и на вас.

Использование облачной функции также отнимает много нагрузки от вашего приложения GAE, поэтому его решение лучше всего, поскольку это действительно больше фоновая работа.

Если вы решите использовать Node.js или Python для записи своей облачной функции, после ее настройки вы можете легко вызвать ее из триггера Pub/Sub или HTTP из вашего приложения Python GAE.

https://cloud.google.com/functions/

  • 0
    примечание: поскольку вы упоминаете, что код работает за пределами GAE, я был бы весьма уверен, что одно из ограничений кода стандартной среды GAE не позволяет этому работать

Ещё вопросы

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