【问题标题】:Filling and submitting textarea with Mechanize in Python在 Python 中使用 Mechanize 填充和提交 textarea
【发布时间】:2012-11-29 12:29:05
【问题描述】:

好的,所以我正在使用 Mechanize 登录 Google 群组并手动将成员添加到群组中。

我已经能够成功登录并导航到相应的页面。在此页面上有一个文本区域框,您可以在其中添加要手动添加到组的电子邮件地址。

这是 textarea 的 html:

<textarea class="gwt-TextArea GFBTXDWBA-" id="gwt-uid-224" aria-haspopup="false" dir="" role="combobox" aria-autocomplete="list" aria-activedescendant=""></textarea>

当我运行一个循环时:

for form in br.forms():
print form

唯一返回的表单是顶部的“搜索成员”表单,没有任何文本区域出现。

我不认为 select_form 会起作用,因为它实际上不是表单。屏幕左上角有一个“添加”按钮,用于提交来自文本区域的输入,这里是“添加”按钮的 HTML:

<input type="text" tabindex="-1" role="presentation" style="opacity: 0; height: 1px; width: 1px; z-index: -1; overflow: hidden; position: absolute;">

我正在尝试做的是将电子邮件地址添加到文本区域并提交。 非常感谢任何帮助。

这是我的完整代码:

import mechanize
import cookielib

br = mechanize.Browser()

cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)

br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

r = br.open('https://accounts.google.com/ServiceLogin?continue=https%3A%2F%2Fgroups.google.com%2Fd%2Fmanagemembers%2Ftesttgroup123456%2Fadd&hl=en&service=groups2&passive=true')
html = r.read()

br.select_form(nr=0)

br.form['Email']='myUsername'
br.form['Passwd']='myPassword'
br.submit()

for form in br.forms():
    print form

【问题讨论】:

  • 我认为developers.google.com/google-apps/groups-settings 出于某种原因不适合?
  • @Jon,我对 API 不熟悉,是否可以用它来做我想做的事情?如果是这样,您是否愿意为我指明正确的方向,我查看了文档,但找不到看起来可以完成我想做的事情的东西。
  • 嗯 - 我不能说我有经验,而且看起来有点笨拙,但它可能是首选方法 - code.google.com/p/google-api-python-client/source/browse/…
  • 谢谢,但是通过这个我仍然只能看到修改组权限和设置的选项,而不是向组中添加成员。不过,我会更深入地研究以确保。
  • 好吧 - 它看起来很模糊是否有官方的首选方式来做这件事 - 这在谷歌方面似乎有点缺陷......其中一些取决于配置 - 所以我可能已经浪费了你的时间在这里 - 对不起!

标签: python mechanize


【解决方案1】:

更好的方法是使用 Google 的 Provisioning API

https://developers.google.com/google-apps/provisioning/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2017-04-06
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    相关资源
    最近更新 更多