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