selenium多实例爬虫的忠告和参数配置

这篇具有很好参考价值的文章主要介绍了selenium多实例爬虫的忠告和参数配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用多进程

加快爬虫速度的方法有几种,异步,多线程,多进程和分布式,不管是哪种都会用到多实例。这几种方法中,只有多进程适合selenium,selenium本身不支持异步,多线程曾经尝试过似乎有问题。

采用哪种框架

单线程爬虫本身很简单,而大规模的分布式多进程爬虫就比较复杂,Scrapy这种简单的框架拿来学习用或者做简单事情够用了,真实的需求往往比较复杂,需要大量定制,需要对Scrapy非常了解,与其被Scrapy这个框框限制住,不如自己写。没有完全通用的框架,爬虫共通的部分只有URL去重,除非有非常适合需求的框架,否则不如自己写。如果是大规模分布式多进程爬虫,可以采用celery来做分布式框架,爬虫自己写。

自己写爬虫需要注意什么

爬虫归结起来有几个部分:

0.从任务队列中获取URL

   单线程爬虫可以直接采用list数据类型,多进程的一般使用数据库比如redis,对任务调度有很复杂的要求的话,可以使用mysql

1.下载网页(借助selenium,requests)

2.分析网页数据和下层链接,按需要保存(使用xpath等等)

3.下层链接按照需要进行筛选,去掉重复URL后,加入任务队列

   如果是单线程爬虫,去重可以直接用python的set数据类型,如果是多进程爬虫,通常使用redis的set数据类型。

4.循环直到任务队列为空

采用哪个平台

windows和linux都使用过,个人建议使用linux,windows上感觉有内存泄漏,爬虫跑多了会内存不足,还有一个重要原因是linux可以使用docker,docker绝对是安装开发部署的利器,测试环境更是必备。

采用哪个语言

其实哪个语言都可以开发爬虫,要省事建议采用主流语言python,开发随大流非常重要,如果你选择冷僻的语言就意味着你一个独自前行,选择主流语言就意味着有很多人与你同行,给你帮助。当然C#,java也算是主流,其他的不建议选择。

要注意内存泄漏

大规模爬虫要爬成千上万的网页,稳定性和坚固性非常重要。chromedriver和chrome都是爬虫的子进程,用windows平台的时候常常出现爬虫终了了,但是chromedriver,chrome进程残留的情况。

后记:linux平台也会产生僵尸,解决办法参见我的另一篇文章

chromedriver僵尸进程的产生原因以及官方解决办法_robinspada的博客-CSDN博客

下面说是selenium多实例爬虫的参数配置

    options = webdriver.ChromeOptions()
    # 必须是headless=new,否则download.default_directory不起作用
    options.add_argument('--headless=new')
    # 下面这些参数是必须的,否则可能出错
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--no-zygote')
    # 替换User-Agent
    options.add_argument(f'user-agent={user_agent}')
    options.add_argument('--proxy-server=192.168.100.xx:24000')
    # 最坑的设置,对于并行爬虫是必须的
    options.add_argument(f'--user-data-dir={userdir}')
    options.add_argument(f"--remote-debugging-port={port}")
    # 使用大容量缓存,减少流量
    options.add_argument('--disk-cache-size=2000000000')
    # 下面这些参数估计没有啥作用,暂时保留
    options.add_argument('--disable-setuid-sandbox')
    options.add_argument("--start-maximized")
    options.add_argument("--disable-infobars")
    options.add_argument("--disable-extensions")
    # 设置下载文件目录为不存在的目录,使其无法下载,估计设置
    prefs = {'download.default_directory': '/tmp/download'}
    options.add_experimental_option('prefs', prefs)

 这个设置是踩过无数坑的血泪经验,代码有注解,只对其中最坑的配置说明一下

    options.add_argument(f'--user-data-dir={userdir}')
    options.add_argument(f"--remote-debugging-port={port}")


这2参数个必须设置成每个进程不一样,使各个进程之间完全隔离,很多单线程爬虫没有提到这2个参数,如果不设置就会有各种稀奇古怪的错误和无尽的烦恼。关键是这些错误都不容易再现,往往爬了很多网后才出现,而错误信息往往把你带偏,不知道真实的原因所在。

比如说

org.openqa.selenium.WebDriverException: unknown error: DevToolsActivePort file doesn’t exist

这个错误的意思可以理解为可用端口耗尽,如果不知道端口,那么webdriver每次就会新返回一个端口,旧的端口没有被复用被抛弃,由于端口是有限的,所以跑了很多网后就会出错。文章来源地址https://www.toymoban.com/news/detail-459060.html

到了这里,关于selenium多实例爬虫的忠告和参数配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python爬虫-获取headers(报文头)关键参数实例小记

    第一步:请求页面,得到响应。 建议首次请求时headers内容都带着,调试的时候根据情况将headers中的参数进行注释,来确定是否为headers的参数或者formdata 参数影响 响应结果。 响应结果: 5分钟后相同参数再次请求 通过排查headers中的 X-Apikey 参数为关键参数。 第二步:全网站

    2024年02月16日
    浏览(32)
  • 26. selenium:浏览器自动测试模块——一款方便且能装X的爬虫工具(附多个实例)

    目录 前言 什么是selenium? 配置selenium 安装selenium库 安装浏览器驱动(以Chrome为例)  使用selenium库 例1:实现打开网页拿取网页标题 运行效果 例2:实现抓取某招聘网站Python岗位的职位信息 运行效果 例3:实现抓取推荐新闻的标题和正文(涉及子页面的切换) 运行效果 例4:

    2024年02月04日
    浏览(53)
  • python 配置 selenium爬虫

    这两天学习Python爬虫,记录一下这个折磨我一两个小时的配置。 值得注意的是,下载的chromedriver.exe文件必须放在和运行的.py文件同一目录下,否则就会报错: selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH. Please see https://chromedriver.chromium.or

    2024年02月03日
    浏览(40)
  • selenium爬虫,配置谷歌浏览器的driver

    用selenium爬虫时,明明已经安装了selenium模块,程序却运行不了。在使用selenium之前必须先配置浏览器对应版本的webdriver 本文主要涉及 驱动有问题driver   网上有很多手动的方法(查看谷歌浏览的版本然后在其他博主分享的webdriver中下载与自己谷歌版本号最贴近的版本号,并

    2024年02月13日
    浏览(71)
  • python爬虫,selenium+chromedriver,谷歌驱动自动下载及配置

    关于toollib 我们在使用selenium时,有一件让我们狠抓狂的事,那就是驱动的下载与配置… 为什么这么说呢? 1)首先确定浏览器对应的驱动版本号 2)然后手动下载下来 3)最后配置驱动路径或放在对应的目录下 使用toollib就很方便,这些都内部处理好了。(pip install toollib) 示

    2024年02月16日
    浏览(53)
  • Hadoop3教程(二十四):Yarn的常用命令与参数配置实例

    本章我是仅做了解,所以很多地方并没有深入去探究,用处估计不大,可酌情参考。 列出所有Application : yarn application -list 根据Application状态过滤出指定Application ,如过滤出已完成的Application: yarn application -list -appStates FINISHED Application的状态有:ALL、NEW、NEW_SAVING、SUBMITTED、

    2024年02月08日
    浏览(82)
  • 爬虫练习:Selenium使用案例

    一、获取某电商平台商品信息 二、获取某网站小说信息 版权声明和免责声明 本博客提供的所有爬虫代码和相关内容(以下简称“内容”)仅供参考和学习之用。任何使用或依赖这些内容的风险均由使用者自行承担。我(博客所有者)不对因使用这些内容而产生的任何直接或

    2024年04月14日
    浏览(33)
  • 使用HTTP隧道代理的Python爬虫实例

            在网络爬虫的开发中,有时我们需要使用代理服务器来访问目标页面,以便实现IP的切换和隐藏真实的网络请求。本文将介绍如何使用Python中的requests库或者urllib2库和HTTP隧道代理来访问目标网页,并获取响应信息。我们将使用一个具体的实例来演示该过程。 requ

    2024年02月12日
    浏览(51)
  • 爬虫使用Selenium生成Cookie

    在爬虫的世界中,有时候我们需要模拟登录来获取特定网站的数据,而使用Selenium登录并生成Cookie是一种常见且有效的方法。本文将为你介绍如何使用Selenium进行登录,并生成Cookie以便后续的爬取操作。让我们一起探索吧! 一、Selenium简介 1. 定义:Selenium是一套自动化测试工具

    2024年02月08日
    浏览(45)
  • 网络爬虫开发(五)01-爬虫高级——Selenium简介 & 根据平台选择安装selenium-webdriver包 & Selenium的基本使用

    网络爬虫开发(五)01-爬虫高级——Selenium简介 根据平台选择安装selenium-webdriver包 Selenium的基本使用 学习目标: 使用Selenium库爬取前端渲染的网页 反反爬虫技术 官方原文介绍: Selenium automates browsers . That’s it! What you do with that power is entirely up to you. Primarily, it is for automating web

    2024年01月24日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包