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()
    
  • 相关阅读:
    pandas.DataFrame.to_excel
    python list [:1]
    python 读取文件
    pandas 中的常用数学计算
    神经网络相关术语
    keras初探
    机器学习相关
    Numpy random arange zeros
    numpy 常用函数
    【Redis学习之四】Redis数据类型 string
  • 原文地址:https://www.cnblogs.com/DismalSnail/p/11353320.html
Copyright © 2011-2022 走看看