首页 > 解决方案 > 用 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'].valuewith的所有可能值form['country'].value = '1'(因为状态列表取决于国家/地区的值)。我该怎么做呢?

感谢您阅读我的问题。

标签: pythonpython-3.xformsweb-scrapingrobobrowser

解决方案


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 的正确方向。


推荐阅读