python 3.5 robobrowser,一次填充一个值的输入

时间:2017-02-05 19:40:00

标签: python web-scraping

我正在尝试使用python 3.5和robobrowser输入输入值后废弃网页。我面临的问题是:尝试在输入中一次输入每个值。

<select name="ctl00$ContentPlaceHolder1$DDLDistrict" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ContentPlaceHolder1$DDLDistrict\',\'\')', 0)" id="ctl00_ContentPlaceHolder1_DDLDistrict">
    <option value="Select District">Select District</option>
    <option selected="selected" value="8">Agra</option>
    <option value="9">A</option>
    <option value="29">B</option>
    <option value="70">C Nagar</option>
    <option value="72">D</option>
    <option value="58">Y</option>
    <option value="40">Z</option>
</select>

我的部分Python代码是:

import re
from robobrowser import RoboBrowser

# Browse to Genius
browser = RoboBrowser(history=True)
browser.open('http://164.100.180.82/ceouptemp/RollPDF.aspx')
from bs4 import BeautifulSoup
form = browser.get_form(name='ctl00$ContentPlaceHolder1$DDLDistrict')

1 个答案:

答案 0 :(得分:1)

只需仔细检查,确保您确实找到了表单,但打印表单。下面的代码假定您使用上面发布的代码进行交互式Python会话。

>>> print(form)

如果您获得一些以<RoboForm __开头的价值,那么您就可以开展业务了。如果您获得None,那么您实际上并没有选择该表单,您应该尝试以下方法来确定表单的位置,

>>> browser.get_forms()

找到包含选择列表的表单后,可以将表单的值更改为某些值(例如&#39; 29&#39;如下) :

form

如果您想要所有选项的列表,可以执行以下操作:

>>> form['ctl00$ContentPlaceHolder1$DDLDistrict'].value = '29'

快乐的报废!

查看RoboBrowser文档以获取更多信息(请注意复选框上的示例就像选择一样):https://github.com/jmcarp/robobrowser