python - 用 Python 填写动态在线表格
问题描述
我正在使用 Python 上的 RoboBrowser,我正在尝试在网站上填写表格(此处)。现在的问题是表单是动态的。如果您打开链接,您会看到一行“国家”、“州/区”、“城市”和“位置”。
州/地区行取决于您从下拉菜单中选择的国家/地区,城市取决于州/地区,位置取决于城市。我希望能够为国家/地区的特定价值提取例如州/地区的“价值”。例如,当我编写以下代码时:
>>> 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'].value
with的所有可能值form['country'].value = '1'
(因为状态列表取决于国家/地区的值)。我该怎么做呢?
感谢您阅读我的问题。
解决方案
http://www.kidzee.com/wp-admin/admin-ajax.php?action=state
在检查网络日志后,学分:@P.hunter,我看到每当我按下选择国家按钮时都会发送一个请求。所以我写了下面的代码来获取数据:
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 的正确方向。
推荐阅读
- rest - 通过 ActiveMQ 从我的 Rest API 调用另一个 Rest API
- c++ - 如何使方法更新C++中类的属性
- python - 为什么 VS 代码无法在 python 的虚拟环境中显示对库的推荐
- wordpress - 在插入数据库的自定义表之前验证 MetaBox
- javascript - Kubernetes javascript客户端 - 无法按标签选择器过滤
- docker - Rancher Ingress 仅在一个工作节点上工作(504 Gateway Timeout)
- c - 读取 C 中的文件时输入正确但输出不正确
- python - 如何通过 python 中的 Web 套接字服务器监听 localhost 流量?
- python - 如何从两种不同的尺寸获得总价
- sql-server-2019 - Azure Data Studio 机器学习 - 无法识别 Python 和 R 包