【问题标题】:Filling up a dynamic online form in Python用 Python 填写动态在线表格
【发布时间】:2018-11-11 06:23:48
【问题描述】:

我正在使用 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' 的所有可能值(因为状态列表取决于国家/地区的值)。我该怎么做呢?

感谢您阅读我的问题。

【问题讨论】:

  • 所以,有 jquery 在幕后运行,打开网络选项卡并选择一个国家/地区,您将看到查询是如何发送到 http://www.kidzee.com/wp-admin/admin-ajax.php?action=state 您可以在该 url 发送带有表单数据的请求01 你会收到数据,快速提问。你打算如何处理验证码?
  • 1.我不想填写表格。当我更改国家/地区的值时,只需获取正在接收的数据(更改状态值)。 2.我尝试了你所说的,使用requests.post和你评论中的url和data: 1。它返回的是这样的:&lt;option value= "" selected&gt;--Select State--&lt;/option&gt;.
  • 我现在可以检索数据了。我只需要在发布请求中使用“状态”:“1”作为数据。它显示了现在该国的所有州。感谢您为我指明正确的方向。

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


【解决方案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 的正确方向。

【讨论】:

  • heeyyy,很棒的哥们,总是在这里寻求帮助,祝福你 ;)
猜你喜欢
  • 2017-02-13
  • 1970-01-01
  • 2013-03-31
  • 2014-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 2017-03-10
相关资源
最近更新 更多