【问题标题】:Python selecting a value in a combo box and HTTP POSTPython 在组合框中选择一个值和 HTTP POST
【发布时间】:2009-04-20 20:29:50
【问题描述】:

在 Python 中,我试图读取 http://utahcritseries.com/RawResults.aspx 上的值。除了默认的 2002 年,我如何读取年份?

到目前为止,使用 mechanize,我已经能够引用 SELECT 并列出其所有可用选项/值,但不确定如何更改其值并重新提交表单。

我确信这是一个常见问题并且经常被问到,但我不确定我什至应该搜索什么。

【问题讨论】:

  • 这似乎是某种 ASP.NET 脚手架类型的东西,因为代码看起来非常由计算机生成。也许一些改写会有所帮助,例如“从 AJAX ASP.NET 应用程序获取数据”..?

标签: asp.net python http web-scraping


【解决方案1】:

那么这个怎么样:

from mechanize import Browser
year="2005"

br=Browser()
br.open("http://utahcritseries.com/RawResults.aspx")
br.select_form(name="aspnetForm")
control=br.form.find_control("ctl00$ContentPlaceHolder1$ddlSeries")
control.set_value_by_label((year,))
response2=br.submit()

print response2.read()

【讨论】:

    【解决方案2】:

    关于页面 AJAX 加载的问题,请使用Firebug!

    安装并打开 Firebug(它是一个 Firefox 插件),进入网络页面,确保选中“全部”。打开 URL 并更改选择框,查看发送到服务器的内容和接收到的内容。

    看起来名字很吸引人的字段ctl00$ContentPlaceHolder1$ddlSeries 是负责任的..以下是否有效..?

    import urllib
    
    postdata = {'ctl00$ContentPlaceHolder1$ddlSeries': 9}
    
    src = urllib.urlopen(
        "http://utahcritseries.com/RawResults.aspx",
        data = urllib.urlencode(postdata)
    ).read()
    
    print src
    

    【讨论】:

    • 不,这不起作用——当我打印 src 时,我仍然看到 2002 年的值。我尝试了类似的东西(尽管更多的行;)——我只是一个菜鸟)
    猜你喜欢
    • 2011-05-27
    • 2017-04-19
    • 2016-05-29
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    相关资源
    最近更新 更多