如何使用Selenium和python下载HTML网页?

时间:2017-03-20 09:43:14

标签: python python-3.x selenium selenium-chromedriver

我想使用selenium和python下载一个网页。使用以下代码:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--save-page-as-mhtml')
d = DesiredCapabilities.CHROME
driver = webdriver.Chrome()

driver.get("http://www.yahoo.com")

saveas = ActionChains(driver).key_down(Keys.CONTROL)\
         .key_down('s').key_up(Keys.CONTROL).key_up('s')
saveas.perform()
print("done")

但是上面的代码不起作用。我正在使用Windows 7。 是否有任何可以提出“另存为”#34;对话框?

由于 卡兰

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码下载页面HTML

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.yahoo.com")
with open("/path/to/page_source.html", "w") as f:
    f.write(driver.page_source)

只需将"/path/to/page_source.html"替换为文件和文件名的理想路径

<强>更新

如果您需要获取完整的网页来源(包括CSSJS,...),您可以使用以下解决方案:

pip install pyahk # from command line

Python代码:

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
import ahk

firefox = FirefoxBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe")
from selenium import webdriver

driver = web.Firefox(firefox_binary=firefox)
driver.get("http://www.yahoo.com")
ahk.start()
ahk.ready()
ahk.execute("Send,^s")
ahk.execute("WinWaitActive, Save As,,2")
ahk.execute("WinActivate, Save As")
ahk.execute("Send, C:\\path\\to\\file.htm")
ahk.execute("Send, {Enter}")