zoukankan      html  css  js  c++  java
  • 使用selenium和chromedriver组合爬虫时,如果爬取的页面数量巨多,会出现占用内存逐渐增大知道程序崩溃的情况

    使用selenium和chromedriver组合爬虫时,如果爬取的页面数量巨多,会出现占用内存逐渐增大知道程序崩溃的情况。

    解决方案:关闭当前的窗口(注意,phantomjs中的窗口其实就是chrome里的标签页,phantomjs是无界面浏览器,不需要像chrome那样可以把几个标签页放在不同的“窗口”显示),打开一个新的窗口请求页面

    代码如下

    from bs4 import BeautifulSoup
    import time
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    chrome_options.add_argument('--headless') #关闭图形界面,提高效率
    #打开一个浏览器
    browser = webdriver.Chrome(executable_path=r'C:ProgramDataAnaconda3chromedriver.exe',chrome_options=chrome_options)
    
    for i in range(1000): #为了查看内存而设置的,多次循环,容易观察
        time.sleep(2)
        browser.get('https://www.baidu.com/')
        html = browser.page_source
        soup = BeautifulSoup(html, 'html.parser')
    
        browser.execute_script('window.open("https://www.sogou.com");')
        print(browser.window_handles)
        browser.close() # 关闭到当前窗口
        print(browser.window_handles) # 跳转到下一个窗口
        for handle in browser.window_handles:
            browser.switch_to.window(handle)
    
    
        print(soup.prettify())
        print("*******************************************************************************************
    
    ")
    
    
    browser.quit()
    
  • 相关阅读:
    typescript
    pyqt5窗口跳转
    pyqt5 列表内添加按钮
    C#窗体最大化,其他控件调整
    C#禁止程序重复打开
    C#添加 mysql.data.dll
    宝塔一键ssl
    宝塔Linux面板 使用阿里云OSS备份数据
    CentOS7使用firewalld打开关闭防火墙与端口
    使用babel编译es6
  • 原文地址:https://www.cnblogs.com/DismalSnail/p/11353320.html
Copyright © 2011-2022 走看看