首页 > 其他分享 >爬虫项目

爬虫项目

时间:2022-12-06 19:00:27浏览次数:49  
标签:retry 浏览器 项目 redis 爬虫 解析 资源

 

spring data flow,各个服务通过rocketmq来串联

 springboot redis jpa Selenium  bucket4j rocketmq jieba |  es + hibernate search | 

UrlManager:

  管理需要采集的资源。

    种子资源的初始化(根据条件参数生成种子资源)-> 创建过程中加分布式锁

              资源的添加删除

              资源的优先级管理(优先级队列,开始使用redis + redission,但是效率很低,使用了二分发去插入,数据量大的时候很慢)

              资源的去重【布隆过滤器 redis + redission】

 

Downloader 【下载资源】

       根据message header里面的资源类型选择不同的下载器:

       为控制下载的频率,获取资源url时候使用RateLimter控制获取的频率。

       HttpClientDownloader:

    简单资源的采集(页面非异步加载,反爬虫弱),使用httpClient(jdk11(响应式(发布-订阅),非阻塞) ,OKHttp, apache httpclient)

      SeleniumDownloader:

    复杂资源(Selenium [səˈliːniəm]+ Chrome):

              因为 chrome的启动和销毁资源消耗比较大,所以用apache object pool写了个浏览器的资源池 用来管理浏览器的生命周期

              SeleniumDownloader的优化:资源加载速度的问题

  构建downLoader时候会传递:

         ProxyManager【代理管理器】:

     维护代理池,代理的生命周期

          UAFactory:

             生成动态的userAgent

     AuthenticationManager【凭证管理器,基于一个分布式的存储后端redis】

                管理登录过程中保存的凭证【cookie】

           DownloadFailedExceptionHandler【异常处理的策略】(不同的异常使用不同的策略处理):

                反爬拦截(验证码,滑块):先尝试操作浏览器解锁, 不行就 wait 或者 kill

                IOException:retry的逻辑 -> 先内部retry, retry还是失败回传给urlManager

        DownloadSuccessHandler(函数):

    列表:解析的资源连接回传到urlManager模块

              详情: 传递到解析模块   

 

ContentParser[内容的解析模块]:

     根据message的header路由不同的解析逻辑

     通过xpath去搜索dom解析html

 

内容的持久化:

      

标签:retry,浏览器,项目,redis,爬虫,解析,资源
From: https://www.cnblogs.com/albertjay/p/16937994.html

相关文章

  • 爬虫学习-04
    一、xpath的使用html中选择标签,可以使用的通用方式css选择xpath选择1.1介绍XPath即为XML路径语言(XMLPathLanguage),它是一种用来确定XML文档中某部分位置的语言,Scr......
  • Python异步爬虫(aiohttp版)
    异步协程不太了解的话可以去看我上篇博客:https://www.cnblogs.com/Red-Sun/p/16934843.htmlPS:本博客是个人笔记分享,不需要扫码加群或必须关注什么的(如果外站需要加群或关......
  • 爬虫从入门到入狱之入门(2)
    1 css选择器bs4可以通过遍历,搜索,css选择器选择标签frombs4importBeautifulSouphtml_doc="""<html><head><title>TheDormouse'sstory</title></head><body>......
  • 摹客RP,资源库可随项目同步离线导出!
    Hello,小伙伴们,又到了摹客的新功能播报时间。本月更新,摹客RP在导出项目文件方面,可支持​​同步导出该项目的资源库​​​,方便后续复用资源;摹客协作对​​任务管理​​模块进......
  • 在windows下导入react项目并且打包编译后部署到nginx上
     在windows下导入react项目并且打包编译后部署到nginx上一、安装npm二、创建react项目三、安装nginx四、总结最近接手了公司的一个django项目,这是应该前后端分......
  • Python全栈工程师之从网页搭建入门到Flask全栈项目实战(4) - Flask模板语法与继承
    1.Flask模板介绍前置:理解渲染机制即上篇笔记中render_template()功能是如何实现的!1)找到html文件地址2)读取html文件中的内容3)替换html中的特殊字符4)将html的内容发送给......
  • 软件项目管理包括哪些内容?
    本文将分享:1、软件项目管理的定义;2、软件项目管理的过程步骤;3、软件项目管理的内容;4、软件项目估算与进度管理方法;5、软件开发各生命周期阶段与文档、角色间的关系;6、软......
  • 项目中如何安装同一依赖的两个版本
    背景如项目中有一个1.0版本的antd库,我们不得已必须使用更高版本的antd方案我们可以使用npm的别名,安装不同版本的库如://安装npminstallantd-v3@npm:[email protected]......
  • Python3+pygame实现飞机大战游戏(免费完整项目)
    版权声明:原创不易,本文禁止抄袭、转载,侵权必究! 一、开发环境开发环境:Windows10   Python3.6.4第三方库:Pygame1.9.6IDE    :PyCharm/SublimeText ......
  • 这个项目,必须退款!
    认真、负责任、有态度!-随笔关于这个项目我接受你们的任何批评和指责。对这个项目做的这个决定,我十分内疚和自责,纵使感到万分不安,但还是必须要坦然的去面对。大家都知道,前段......