使用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:\ProgramData\Anaconda3\chromedriver.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("*******************************************************************************************\n\n")


browser.quit()

转载于:https://www.cnblogs.com/DismalSnail/p/11353320.html

你可能感兴趣的:(使用selenium和chromedriver组合爬虫时,如果爬取的页面数量巨多,会出现占用内存逐渐增大知道程序崩溃的情况...)