【问题标题】:Compile web form and retrive a file with mechanize使用 mechanize 编译 Web 表单并检索文件
【发布时间】:2014-08-19 09:28:23
【问题描述】:

我需要自动提取本网站所有文件:http://www.coeweb.istat.it/predefinite/tutto_paese_merce.asp?livello=ATE07_AT2&riga=MERCE&territorio=S&AG=S

在这个网站上,有一个带有组合框和复选框的 Web 表单可以设置,还有一个按钮可以执行下载 xls 文件。

我发现 mechanize 是一个很好的 python 库,可以帮助我自动完成这项任务。 我可以配置组合框以在 html 中打开结果页面,但我不明白如何下载 xls 文件。有什么建议吗?

非常感谢!

#my code
from mechanize import Browser

br = Browser()
page = br.open("http://www.coeweb.istat.it/predefinite/tutto_paese_merce.asp?livello=ATE07_AT2&riga=MERCE&territorio=S&AG=S")

br.select_form(nr=0)
control_xls = br.form.find_control("XLS")
br.find_control("XLS").items[0].selected=True
control = br.form.find_control("CODTERRITORIO")    
control.items[0]
print control.value
print control
#select Florence
control.value = ["309048"]
print control
br[control.name] = ["309048"]
response = br.submit()

out_file = open("dataset.html", "w")
out_file.write(response.read())
out_file.close()

【问题讨论】:

  • 代码似乎可以正常工作,对我来说有什么问题?
  • 我还需要下载 xls 文件,但我不知道该怎么做。 (现在我可以用 pandas 从 html 中提取表格,但我想学会避免这个技巧)

标签: python html forms mechanize


【解决方案1】:

将您正在编写的文件的扩展名从 .html 更改为 .xls。

from mechanize import Browser

br = Browser()
br.open("http://www.coeweb.istat.it/predefinite/tutto_paese_merce.asp?livello=ATE07_AT2&riga=MERCE&territorio=S&AG=S")

br.select_form(nr=0)
br.find_control("XLS").items[0].selected = True
br.find_control("CODTERRITORIO").value = ["309048"]
response = br.submit()

with open("dataset.xls", "w") as xls_file:
    xls_file.write(response.read())

【讨论】:

    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多