爬取无限滚动页面触发Out of Memory错误的问题求助
Facebook页面爬取内存溢出问题
爬取含大量帖子的Facebook页面时,爬取数百条后内存快速累积,触发内存不足错误。
已尝试以下方案但均无效:
- 提取数据后从DOM中删除每个帖子,程序仍崩溃
- 使用无头模式、禁用图片,问题依旧
查看Firefox和Chrome的性能面板,结果如下:
无法理解为何删除处理完成的帖子后,Nodes和Listeners数量仍持续增加。
以下是我的代码:
import time from selenium import webdriver from selenium.webdriver.common.by import By while True: for scroll in range(2): # 滚动到底部 print("scrolling once") driver.execute_script( "window.scrollTo(0, document.body.scrollHeight);") # 等待页面加载 time.sleep(1) print("Finished scrolling") # 页面加载完成后开始爬取 print("Finding all posts") posts = driver.find_elements(By.CSS_SELECTOR, "div.x1yztbdb.x1n2onr6.xh8yej3.x1ja2u2z") print("Found all posts") # poster_names = driver.find_elements(By.XPATH, "//a[@data-hovercard-referer]") # names = driver.find_elements(By.XPATH, './/div[@data-ad-rendering-role="profile_name"]') for count, post in enumerate(posts): # 此处处理数据 driver.execute_script(""" var element = arguments[0]; element.parentNode.removeChild(element); """, post) # driver.execute_script("window.gc();") print("Deleted this post to save memory") driver.quit()
内容的提问来源于stack exchange,提问作者John Hon
相关产品推荐
相关产品推荐

