爬虫那些事-网页爬虫设计思路

本文介绍了网页爬虫的设计思路,包括任务调度、去重处理等关键环节。系统基于scheduler获取待抓取任务,使用Downloader下载网页,PageProcessor处理内容并分裂链接,Pipeline负责结果处理。采用Redis作为调度数据源,RabbitMQ实现主程序解耦,布隆过滤器解决URL和内容去重,存储则使用MongoDB和MySQL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

爬虫广泛使用于搜索引擎、新闻聚合以及大数据采集当中,一个良好的爬虫系统需要考虑很多方面:爬虫种子的获取需要有个稳定的任务调度机制,下载页面过程需要考虑到网页内容的生成是否是需要js渲染,请求网页是否需要设置请求头,还有请求过多会不会被对方封锁。另外就是数据处理过程,什么页面需要进行数据提取,什么页面是分裂成其它页面,还有页面内容提取需要采用什么手段:比如css selector解析,xpath解析,还有许多内容是通过json格式返回 需要解析json,还有的内容是属于xml,这就需要你都还有当获取到结果之后需要对结果进行整理、规范化和持久化。

二、设计思路

           图2-1 设计思路

     因为工作当中主要是对新闻内容进行抓取,所以结合新闻资讯进行处理。如图2-1所示,一个典型的新闻网站会分两个页面进行展示,一个是列表页一个是详情页,我们要从列表页进行处理分裂出详情页,然后下载详情页进行处理提取里面的详情页。最后对提取的结果进行处理,处理的结果后面可以接入其它流程如更进一步的清洗等,最后经过持久化的内容最终可以通过业务流程处理出去。当一个业务流程抓住输入输出,然后结构化和剖析这个流程后,就会知道怎么进行设计了。

三、爬虫系统架构图

图3-1 技术架构

相信接触过scrapy及其它第三方开源抓取工具应该对上面的图不会陌生,系统也是参考java一个比较出名的框架webmagic进程处理的,基于组件化进行开发:

    爬虫系统通过scheduler获取待抓取任务,系统需要考虑到多种可

首先,简单介绍下网络爬虫   网络爬虫是通过网页的链接地址来寻找网页,从网站某一个页面(设置为主页)开始,读取网页的内容,找到网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到这个网站所有的网页都抓取完为止。实际上,由于抓取技术的限制以及存储技术、处理技术的限制,要完全抓取网站的所有网页是不可能的,也是不实际的!本着从用户需要为出发点,实际需要抓取的网页往往是有限的,只需抓取符合用户要求的网页即可! 抓取网页的策略 在抓取网页的时候,网络爬虫一般有两种策略(即两种搜索方法),广度优先和深度优先。 广度优先:是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此页面中链接的所有页面。这是最常用的方式,广度优先的搜索策略可以并行处理,提高抓取速度。 深度优先:是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这种策略较易实现,但是抓取速度慢。 由于一般不可能抓取网站的所有链接,一般会设置访问层数,即搜索深度。起始页的深度为0,起始页中的链接url深度为1,依此类推。 构造C#语言爬虫程序 C#已经封装了HTTP访问和多线程,这对编写网络爬虫提供了方便,而要C#网络爬虫程序需要解决以下问题: HTML分析:需要某种HTML解析器来分析爬虫程序遇到的每一个页面。 页面处理:需要处理每一个下载得到的页面。下载得到的内容需要保存起来,以便进一步分析处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

house.zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值