Python Mechanize 与动态下拉选择

发布于 2024-09-29 20:55:18 字数 470 浏览 1 评论 0原文

我正在使用 mechanize 来填写表单,并且遇到了动态填充下拉列表的问题取决于先前的选择。

在 mechanize 中,我执行以下操作来选择类别:

import mechanize
br = mechanize.Browser()
"""Select the form and set up the browser"""
br["state"] = ["California"]
br["city"] = ["San Francisco"] # this is where the error is
br.submit()

在选择州“加利福尼亚”之前,我无法选择城市“旧金山”,因为选择“加利福尼亚”后,城市下拉列表会动态填充。

我怎样才能用Python提交城市并实现机械化?

I'm using mechanize to fill forms and I run into a problem with dynamically-filled dropdown lists that are dependent on a previous selection.

In mechanize, I do something like this to select the category:

import mechanize
br = mechanize.Browser()
"""Select the form and set up the browser"""
br["state"] = ["California"]
br["city"] = ["San Francisco"] # this is where the error is
br.submit()

I cannot choose the city as "San Francisco" until I have chosen the state as "California," because the city dropdown list is dynamically populated after choosing "California."

How can I submit the city with Python and mechanize?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半枫 2024-10-06 20:55:18

mechanize 不支持 JavaScript。相反,您应该使用 urllib2 发送所需的值。

import urllib2
import urllib

values = dict(state="CA", city="SF") # examine form for actual vars
try:
    req = urllib2.Request("http://example.com/post.php",
                          urllib.urlencode(values))
    response_page = urllib2.urlopen(req).read()
except urllib2.HTTPError, details:
    pass #do something with the error here...

mechanize doesn't support JavaScript. Instead, you should use urllib2 to send the desired values.

import urllib2
import urllib

values = dict(state="CA", city="SF") # examine form for actual vars
try:
    req = urllib2.Request("http://example.com/post.php",
                          urllib.urlencode(values))
    response_page = urllib2.urlopen(req).read()
except urllib2.HTTPError, details:
    pass #do something with the error here...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文