爬虫篇(11)高效selenium

前言:

曾找过各种方式去加速selenium,然而效果都不尽人意,最后自己花了一些时间做了一个高效selenium模块,加上高效代理,一天请求百万次可能有些吃力(cpu、网速等各方面),但是几十万的请求次数在线上测试环境没什么问题。

设计逻辑:

使用Selenium(模拟浏览器)加上代理,一次启动可同时打开10个(可调整)页面发起请求,并使用字典绑定每个url对应的页面权柄。在等待一定加载时间后(如20秒,可调整),开始从第一个页面开始,利用Selenium显示等待WebDriverWait(在一定时间内如果检测不到指定内容则报错)进行特定标签的检测(如商品名title标签),检测到则调用成功函数,失败则等待极短时间后再次检测,再次失败则调用失败 函数。 防止selenium卡在加载界面,加入selenium的最长加载时间,并且加入不同机制提升效率,如第一个页面最长等待时间为20秒,当遇到失败界面时调整为2秒,再次遇到失败界面调整为1秒,递减直至0.5秒。

截图:

代码部分(简单的可跑的demo):

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
from loguru import logger
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from multiprocessing import Process, Pool
import os
import time
import random, traceback


def get_proxy():
    return "1.1.1.1"


class Selenium_Obj(object):
    def __init__(self, headless=True, proxy=True):
        self.proxy = proxy
        self.
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值