1

我想自动归档此页面http://energywatch.natgrid.co.uk/EDP-PublicUI/Public/InstantaneousFlowsIntoNTS.aspx上的数据,并上传到数据库中。

我一直在其他页面上使用 python 和 win32com(在公司代理之后,所以没有直接的网络访问,因此我使用 IE 来这样做)。我的问题是,当单击底部的“单击此处下载数据”链接时,是否仍然可以提取并保存返回的 CSV 数据?此链接是 javascript 回发,比将页面本身重新格式化为 CSV 更容易。

. 当然,如果可以提出更简单的替代方案,我不一定会致力于使用 Python?

谢谢

4

1 回答 1

1

这是一个更好的方法,使用mechanize库。


import mechanize

b = mechanize.Browser()
b.set_proxies({'http': 'yourproxy.corporation.com:3128' })

b.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')]
b.open("http://energywatch.natgrid.co.uk/EDP-PublicUI/Public/InstantaneousFlowsIntoNTS.aspx")

b.select_form(name="form1")
b.form.find_control(name='__EVENTTARGET').readonly = False
b.form['__EVENTTARGET'] = 'a1'

print b.submit().read()

请注意如何指定 mechanize 应使用代理服务器(也可以使用 plain urllib)。还要注意 ASP.NETs javascript postback 是如何模拟的。

编辑:

如果您的代理服务器使用 NTLM 身份验证,则可能是问题所在。AFAIK urllib2 不处理 NTLM 身份验证。你可以试试NTLM Authorization Proxy Server。从自述文件


什么是“NTLM 授权代理服务器”?

“NTLM 授权代理服务器”是一个类似代理的软件,它将使用 MS 专有的 NTLM 授权方法在 MS 代理服务器和 Web 服务器(尤其是 ISS)上授权您,它可以更改客户端请求标头中的一些值,以便这些请求看起来像 MS IE 制作的。它是用 Python 语言编写的。请参阅 www.python.org。


于 2009-07-15T12:38:01.877 回答