Python selenium get页面很慢时,处理办法

本文介绍如何使用Selenium设置页面加载超时,通过调整timeout来提高脚本执行效率,并以获取百度贴吧帖子总页数为例,展示如何在页面未完全加载的情况下定位所需的元素。
部署运行你感兴趣的模型镜像

driver.get("url")等到页面全部加载渲染完成后才会执行后续的脚本。

在执行脚本时,driver.get("url") ,如果当前的url页面内容较多加载特别慢,很费时间,但是我们需要操作的元素已经加载出来,可以将页面加载停掉,不影响后面的脚本执行,解决办法

设置页面加载timeout,get操作: try get except 脚本window.stop(),  使用GeckoDriver上有效果,

但是在ChromeDriver上还是会有问题,抛出异常timeout后续脚本不会继续执行

GeckoDriver执行具体如下:

访问百度贴吧某个获取其帖子总页数:

可以通过两种方式获取,简单的就是直接定位元素共11页

代码用定位尾页获取总页数


from selenium import webdriver
import re

driver = webdriver.Firefox()
#设定页面加载timeout时长,需要的元素能加载出来就行
driver.set_page_load_timeout(20)
driver.set_script_timeout(20)
#try去get
try:
    driver.get("http://tieba.baidu.com/p/5659969529?red_tag=w0852861182")
except:
    print("加载页面太慢,停止加载,继续下一步操作")
    driver.execute_script("window.stop()")
last_page_element = driver.find_element_by_css_selector("li.l_pager.pager_theme_4.pb_list_pager >a:nth-child(12)") #定位到元素尾页元素
#获取尾页页码链接文本
text = last_page_element.get_attribute("href")
all_page_num = re.search("\d+$",text).group() # 正则匹配到页码
print("当前贴吧贴子总页数为:%s"%all_page_num)

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

为了提高 Selenium 打开浏览器的速度,可以采取以下几种优化方法: 1. **使用无头模式(Headless Mode)** 无头模式允许浏览器在后台运行,而无需打开图形用户界面。这可以显著减少资源消耗并加快启动速度。例如,使用 Chrome 的无头模式: ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--headless") driver = webdriver.Chrome(options=chrome_options) ``` 2. **禁用不必要的浏览器扩展和功能** 通过禁用不必要的功能(如图片加载、JavaScript、GPU 加速等),可以进一步减少浏览器的启动间和资源占用。例如: ```python chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--blink-settings=imagesEnabled=false") chrome_options.add_argument("--disable-javascript") ``` 3. **使用轻量级浏览器** 与传统的 Chrome 或 Firefox 相比,Chromium 是一个更轻量级的浏览器,适合用于自动化任务。它更新频繁且功能丰富,可以在某些场景下提供更好的性能[^2]。 4. **复用浏览器会话** 如果需要多次执行测试或爬取任务,可以考虑复用现有的浏览器会话,而不是每次都重新启动浏览器。这样可以避免重复的初始化过程。 5. **优化 WebDriver 配置** 确保使用的 WebDriver 版本与浏览器版本兼容,并且尽可能使用最新的版本以获得更好的性能。此外,避免频繁更新驱动程序,选择稳定的版本以减少维护成本[^1]。 6. **使用多线程或多进程** 如果需要并行执行多个任务,可以利用 Python 的多线程或多进程功能来加速脚本的运行。例如,使用 `threading` 模块来启动多个浏览器实例: ```python import threading from selenium import webdriver def open_browser(): driver = webdriver.Chrome() driver.get("http://example.com") threads = [] for _ in range(5): t = threading.Thread(target=open_browser) t.start() threads.append(t) for t in threads: t.join() ``` 7. **选择更高效的工具** 如果 Selenium 仍然无法满足性能需求,可以考虑使用其他更高效的工具,如 Puppeteer 或 Playwright。这些工具提供了更现代的 API,并且在某些场景下比 Selenium 更快。 通过以上方法,可以有效提高 Selenium 打开浏览器的速度,同减少资源消耗和维护成本。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值