【发布时间】:2012-08-17 07:30:10
【问题描述】:
我正在使用 python 和 selenium 中的远程 Web 驱动程序来尝试从 Google Mini 生成和下载报告(xml 文件)。我生成文件很好,并且能够选择导出链接。但是有没有一种简单的方法可以指示远程 webdriver 将该链接下载到文件中?
【问题讨论】:
-
为什么不
urllib.urlretrieve()? -
因为虽然我可以选择要单击以导出文件的元素,但如果我 urlretrieve url,我实际上会得到一个 html 页面而不是我期望的 xml 页面。但是当 selenium 点击元素时,webdriver 服务器报告它得到了一个 xml 页面。
-
如果您已经下载了,只需将页面保存到本地文件:
with open(filename, "wb") as file: file.write(driver.page_source) -
不幸的是,如果我尝试执行 driver.get(url),它会抛出一个错误:15:41:20.275 WARN - Failed parsing XML document search.example.com:8443/…: Element type "topQuery"必须后跟属性规范“>”或“/>”。所以我认为它正在尝试解析我不需要的 XML 文件 - Google Mini 有时会像“
223 那样回退 XML -
您是否尝试过设置
Accept标头以使用 urllib2 获取 XML 而不是 HTML?您可以使用网络嗅探器(例如 wireshark)来找出使用 urllib2 和 webdriver 的请求有何不同。
标签: python selenium selenium-webdriver