python - 在 Python 中填写动态在线表单

标签 python python-3.x forms web-scraping robobrowser

我在 Python 上使用 RoboBrowser,我正在尝试在网站 (here) 上填写表格。现在问题是表单是动态的。如果你打开链接,你会看到一行“国家”、“州/地区”、“城市”和“位置”。

州/地区行取决于您从下拉菜单中选择的国家/地区,城市取决于州/地区,位置取决于城市。我希望能够提取例如国家/地区特定值的州/地区的“值”。例如,当我编写以下代码时:

>>> import re
>>> from robobrowser import RoboBrowser
>>> browser = RoboBrowser()
>>> browser.open('http://http://www.kidzee.com/admissions-at-kidzee/')
>>> form = browser.get_form()
>>> form
<RoboForm siteid=, adunit=, fname=, lname=, email=, mobile=,country=,state=,
city=, location=0, 6_letters_code=, admission_submit=Submit>
>>> form['country'].options
['','1','2'] #The options presented are India and Nepal.
>>>form['country'].value = '1'
>>>form['state'].options
['']

现在我想做的是获取 form['state'].valueform['country'].value = '1' 的所有可能值>(因为状态列表取决于国家/地区的值)。我该怎么做?

感谢阅读我的问题。

最佳答案

在检查网络日志时,学分:@P.hunter,我看到一个请求被发送到 http://www.kidzee.com/wp-admin/admin-ajax.php?action= state 每当我按下“选择国家/地区”按钮时。所以我写了下面的代码来获取数据:

    from urllib.parse import urlencode
    from urllib.request import Request, urlopen

    url = 'http://www.kidzee.com/wp-admin/admin-ajax.php?action=state'
    fields = {'state': '1'}  

    r = Request(url, urlencode(fields).encode())
    json = urlopen(r).read().decode()
    print(json)

现在我得到了该国所需的州。

感谢@P.hunter 的正确指导。

关于python - 在 Python 中填写动态在线表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50637847/

相关文章:

python - 将 pdf 文件附加到 EmailMessage?

php - 在没有提交按钮的情况下调用php文件

python - 如何将 Bokeh 图例放在 'bottom_right' 上

python - 当我注册用户时,页面上没有密码字段

python - 读取 .wav 文件时返回的数据到底是什么?

python - 如何使用数据透视表 Python 创建重复行

python:在单元测试中测试特定功能?

python-3.x - 如果文件用 int 而不是 string 写入,python 中的错误处理

ruby-on-rails - Rails `form_with` `redirect_to` 303 `:see_other` 使得请求不重定向

php - 使用php将数据输入mysql数据库