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