爬虫项目

news/2024/7/5 3:04:47

 

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

 

内容的持久化:

      


http://lihuaxi.xjx100.cn/news/327515.html

相关文章

爬虫学习-04

一、xpath的使用 html中选择标签,可以使用的通用方式css选择 xpath选择1.1介绍 XPath 即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言,Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了…

不用USB,通过adb无线调试安卓手机页面

以前真机调试手机页面,都是使用数据线连接手机和电脑,近日身边没有USB数据线,折腾了下如何不依赖数据线只用无线调试手机页面,教程如下。 本教程适用于安卓11以及以上版本。否则应该使用USB数据线连接。一、安装adb工具 下载地址:https://developer.android.com/studio/re…

Unity【Multiplayer 多人在线】服务端、客户端通用架构的使用指南

文章目录🚩 Import🚀 protogen使用方法🪐 客户端接口🌈 服务端接口🧭 数据处理🎨 Example🚩 Import 下载SKFramework框架,导入到Unity中; 在框架Package Manager中搜索并…

Java高效率复习-MySQL下篇[MySQL]

前言 本文章的语言描述会比上篇多一些 数据库的创建修改与删除 标识符命名规则 数据库名、表名不得超过30个字符,变量限制为29个必须只能包含A-Z,a-z,0-9,_等63个字符数据库名、表名、字段名等对象名中间不要包含空格同一个My…

超透镜与超表面全息

超透镜和超表面因其操纵电磁场的独特特性而在科学上声名鹊起,如今它们的制造已经变得可行。但它们的设计难度远远超过了传统镜片,因为必须考虑到纳米级构件的特性。 VirtualLab Fusion的优势  统一的平台:具有将纳米级构建模块和大尺…

CUDA入门和网络加速学习(一)

0. 简介 最近作者希望系统性的去学习一下CUDA加速的相关知识,正好看到深蓝学院有这一门课程。所以这里作者以此课程来作为主线来进行记录分享,方便能给CUDA网络加速学习的萌新们去提供一定的帮助。 1. GPU与CPU区别 处理器指标一般主要分为两大类&…

彻底搞懂MySql的B+Tree

1.什么是索引 官方定义:一种能为mysql提高查询效率的数据结构,索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。好比如,一本书,你想找到自己想看的章节内容,直接查询目录就行。这里的目录就类似索引…

[附源码]计算机毕业设计勤工助学管理系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…