老实说,我只是想将网页保存为文本文件。所以我做了什么:
fp=webdriver.FirefoxProfile()
browser = webdriver.Firefox(firefox_profile=fp)
browser.get('http://www.google.com')
saveas = ActionChains(browser).key_down(Keys.CONTROL)\
.send_keys('s').key_up(Keys.CONTROL)
saveas.perform()
但它直接进入Firefox的Save As窗口,我只需要按 Enter 按钮保存页面。我怎样才能做到这一点?
我不想使用另一个图书馆按键(但是,如果没有其他选择,我可以考虑一下)。此外,如果有一种更简单的方法将页面保存为Selenium的文本文件,我会采用它。
答案 0 :(得分:1)
在这种情况下,您无需手动调用“保存”对话框。只需从.page_source
属性中获取完整的页面源代码:
browser.page_source
将其保存到文件中:
with open('output.html', 'w') as f:
f.write(browser.page_source.encode('utf-8'))
您可能在将 Enter 键发送到此“保存(as)”对话框时遇到困难的原因是它不是javascript弹出窗口 - selenium无法控制它。在这种情况下,通常我们会尝试通过调整firefox首选项来阻止弹出窗口自动打开和下载文件,请参阅:
但是,由于这是一个需要下载的“完整网页” - 没有特定的mime类型可供配置(如果我们谈论的是Firefox)。
而且,是的,考虑一下@MattDMo指出的内容 - 如果形成页面没有动态性,那么您可能不需要selenium
。
修改强>:
获取页面文本并保存:
with open('/Path/to/my/file/output.txt', 'w') as f:
f.write(driver.find_element_by_tag_name('body').text.encode('utf-8'))
答案 1 :(得分:0)
简单地保存网页内容不需要selenium:
import requests
url = 'https://www.google.com'
r = requests.get(url)
with open('google.html', 'w') as fh:
fh.write(r.text)
如果您愿意,也可以使用 urllib
,urllib2
或类似内容,我发现requests
是最简单,最直接的。
答案 2 :(得分:-1)
.send_keys(Keys.RETURN)
应该为你做。