Python Selenium中driver.execute_script("window.stop();")的作用是什么?
谷歌学术爬虫代码中
window.stop()的作用说明 首先附上对应代码片段:
def scrape_scholar(keyword) : try : url = 'https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&as_ylo=2017&q=&btnG=' option = webdriver.ChromeOptions() driver = webdriver.Chrome("./UI/chromedriver", options=option) wait = WebDriverWait(driver, 2000) driver.get(url) wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="gs_hdr_frm"]/div[1]/input'))) driver.execute_script("window.stop();")
这个语句本质是Selenium调用浏览器原生的JavaScript停止加载接口,效果和手动点击浏览器左上角的停止加载按钮完全一致,在这个爬虫场景下的具体作用有三个:
- 提升爬取效率:
driver.get()默认会等待页面所有资源全部加载完成才会继续执行后续代码,但是代码里已经通过显式等待确认了搜索框这个核心元素已经加载完成,剩下还在加载的广告、统计脚本、无关图片等资源对爬虫没有任何价值,直接停止加载可以节省大量不必要的等待时间,尤其是网络环境差的时候效果更明显。 - 降低被反爬检测的概率:谷歌学术的风控机制会通过页面加载过程中发出的各类埋点、检测请求识别爬虫行为,提前停止页面加载可以避免这类风控请求发出,降低被封IP、弹出人机验证的概率。
- 保障操作稳定性:部分页面的异步加载内容可能会修改、遮挡已经渲染完成的元素,提前停止加载可以保证已经定位到的元素状态稳定,避免后续输入关键词、点击搜索等操作时出现元素不可用的报错。
内容的提问来源于stack exchange,提问作者Ismail Liu
相关产品推荐
相关产品推荐

