Using Selenium in Python to save a webpage on Firefox

前端 未结 4 2106
野的像风
野的像风 2021-01-01 17:47

I am trying to use Selenium in Python to save webpages on MacOS Firefox.

So far, I have managed to click COMMAND + S

相关标签:
4条回答
  • 2021-01-01 18:10

    This is a complete, working example of the answer RemcoW provided:

    You first have to install a webdriver, e.g. pip install selenium chromedriver_installer.

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    # core modules
    import codecs
    import os
    
    # 3rd party modules
    from selenium import webdriver
    
    
    def get_browser():
        """Get the browser (a "driver")."""
        # find the path with 'which chromedriver'
        path_to_chromedriver = ('/usr/local/bin/chromedriver')
        browser = webdriver.Chrome(executable_path=path_to_chromedriver)
        return browser
    
    
    save_path = os.path.expanduser('~')
    file_name = 'index.html'
    browser = get_browser()
    
    url = "https://martin-thoma.com/"
    browser.get(url)
    
    complete_name = os.path.join(save_path, file_name)
    file_object = codecs.open(complete_name, "w", "utf-8")
    html = browser.page_source
    file_object.write(html)
    browser.close()
    
    0 讨论(0)
  • 2021-01-01 18:17
    with open('page.html', 'w') as f:
        f.write(driver.page_source)
    
    0 讨论(0)
  • 2021-01-01 18:25

    What you are trying to achieve is impossible to do with Selenium. The dialog that opens is not something Selenium can interact with.

    The closes thing you could do is collect the page_source which gives you the entire HTML of a single page and save this to a file.

    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)
    

    If you really need to save the entire website you should look into using a tool like AutoIT. This will make it possible to interact with the save dialog.

    0 讨论(0)
  • 2021-01-01 18:30

    You cannot interact with system dialogs like save file dialog. If you want to save the page html you can do something like this:

    page = driver.page_source
    file_ = open('page.html', 'w')
    file_.write(page)
    file_.close()
    
    0 讨论(0)
提交回复
热议问题