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