当前位置:   article > 正文

爬虫篇(11)高效selenium_加速selenium爬取

加速selenium爬取

前言:

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

设计逻辑:

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

截图:

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

  1. from selenium.webdriver import Chrome
  2. from selenium.webdriver import ChromeOptions
  3. from loguru import logger
  4. from selenium.webdriver.common.by import By
  5. from selenium.webdriver.support.ui import WebDriverWait
  6. from selenium.webdriver.support import expected_conditions as EC
  7. from multiprocessing import Process, Pool
  8. import os
  9. import time
  10. import random, traceback
  11. def get_proxy():
  12. return "1.1.1.1"
  13. class Selenium_Obj(object):
  14. def __init__(self, headless=True, proxy=True):
  15. self.proxy = proxy
  16. self.chrome_options = ChromeOptions()
  17. # 不加载图片 不加载JS
  18. No_Image_loading = {'profile.default_content_setting_values': {'images': 2, 'javascript': 2}}
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/1012647
推荐阅读
相关标签
  

闽ICP备14008679号