在Python中使用Selenium在Firefox上保存网页

Tom*_*y N 8 python firefox selenium save-as

我想用SeleniumPython保存网页上MacOS Firefox.

到目前为止,我已设法点击COMMAND + S弹出SAVE AS window.然而,

我不知道如何:

  1. 更改文件的目录,
  2. 更改文件的名称,和
  3. 单击SAVE AS按钮.

有人可以帮忙吗?

以下是我用来点击的代码COMMAND + S:

ActionChains(browser).key_down(Keys.COMMAND).send_keys("s").key_up(Keys.COMMAND).perform()
Run Code Online (Sandbox Code Playgroud)

此外,我使用这种方法的原因是我遇到Unicode编码错误: -

  1. 将page_source写入html文件和
  2. 将报废信息存储到csv文件中.

写一个html文件:

file_object = open(completeName, "w")
html = browser.page_source
file_object.write(html)
file_object.close() 
Run Code Online (Sandbox Code Playgroud)

写入csv文件:

csv_file_write.writerow(to_write)
Run Code Online (Sandbox Code Playgroud)

错误:

UnicodeEncodeError:'ascii'编解码器不能对位置1中的字符u'\ xf8'进行编码:序数不在范围内(128)

mis*_*oop 9

with open('page.html', 'w') as f:
    f.write(driver.page_source)
Run Code Online (Sandbox Code Playgroud)


Rem*_*coW 8

你想要实现的是Selenium无法做到的.打开的对话框不是Selenium可以与之交互的对象.

你可以做的收尾是收集page_source它,它会为你提供单个页面的整个HTML并将其保存到文件中.

import codecs

completeName = os.path.join(save_path, file_name)
file_object = codecs.open(completeName, "w", "utf-8")
html = browser.page_source
file_object.write(html)
Run Code Online (Sandbox Code Playgroud)

如果你真的需要保存整个网站,你应该使用像AutoIT这样的工具.这样就可以与保存对话框进行交互.


Mob*_*ers 5

您无法与系统对话框(如保存文件对话框)进行交互。如果要保存页面html,可以执行以下操作:

page = driver.page_source
file_ = open('page.html', 'w')
file_.write(page)
file_.close()
Run Code Online (Sandbox Code Playgroud)