使用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()


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM