Comments (33)
我使用Webmagic内核写了一个爬虫的网页配置和爬虫管理界面,还包括数据存储与搜索
https://github.com/gsh199449/spider
from webmagic.
更新:
Part1和Part3先搁置,先从Part2开始!
后台包括创建爬虫和管理爬虫/机器(worker)两部分,设计图如下:
创建爬虫
这里可以配置爬虫的基本信息。
爬虫的抽取逻辑PageProcessor
采用模板化的**,编写一个Java文件之后,提供一些属性注入点,程序会自动根据注入点,产生表单。
管理爬虫
这里可以查看爬虫运行状态,并对爬虫进行管理。
worker是正在运行的机器。
爬虫状态包括总共url,下载页面数,失败数等。失败数可以点击查看详细结果及异常。
from webmagic.
更新分布式架构:
WebMagic之前具有基本的分布式功能,可以将一个Spider部署到多台机器上,并通过Redis来管理URL,达到多机合作抓取的目标。
我在WebMagic-Avalon里计划完成一个管理后台,通过这个后台可以新建、管理和监控爬虫,具体的产品形态,见草图http://my.oschina.net/flashsword/blog/202889。
这个系统涉及到一个Spider的动态创建和管理的问题。之前WebMagic是一个Java应用内部框架,并不具有动态创建的能力,也没有外部管理的能力。于是,在WebMagic-Avalon里,需要一个新的分布式方案。
总体架构:
这个系统共有4个角色:
Scheduler:
Scheduler是WebMagic的基本角色,它对需要抓取的URL进行管理,并进行去重等工作。Scheduler是集中式的,使用Redis来实现Scheduler是比较好的选择。
Spider:
Spider是WebMagic的基本角色,即对某一个站点的爬虫,它包括下载、解析以及持久化的工作。它会从Scheduler中拉到URL来处理,并添加新的URL到Scheduler。Spider是多线程的,单机的多个Spider可能会共用一个线程池。
Worker:
Worker对应一台机器,它包含多个Spider,提供Http方式的API,供外部系统进行控制,从而在本地创建、管理Spider。Worker是无状态的,非常容易水平扩展。
Admin:
Worker对应一台机器,它知道所有Worker的地址,提供Web页面,开发者可以在Admin的页面操作,操作后Admin发送Http请求到Worker来发布任务。
其他技术选型:
1. 容器:
- Worker和Admin都是war包,可以部署到Web容器中,同时也内置Jetty,支持直接启动。
- 考虑到维护性问题,Web框架还是使用较为主流的Spring MVC。
2. 存储:
- 系统内部的信息存储使用Mysql,可能后期会提供一个本地化的数据库如H2,以做到开箱即用。
- URL管理基于Redis,虽然数据规模小的时候,Mysql也能胜任,但是Redis仍然最理想的选择。
- 抓取结果的存储由用户自定义,默认支持Mysql和文件。
3. 通讯:
- Admin和Worker直接通过Http API通讯,数据交换格式为JSON。
- Admin可以直接发布爬虫需求,使用forger在客户端解析配置,并产生新爬虫。
from webmagic.
看着很给力,一直也想做类似的工作,不过精力和能力都有限!
from webmagic.
目前工作中正在考虑这部分内容的开发,希望后续有机会pull request进来
from webmagic.
爬虫管理页面,创建一个站点,针对这个站点的可以随时启动或停止,针对站点设置规则,根据时间定时抓取页面,会用到定时器吧,quartz 这个可以是一个选择吧。
from webmagic.
看起来很强大啊,不知道能不能支持瀑布流的网页抓取。
from webmagic.
设计成这样是不就能用注解方式了,因为注解vlaue 不能拼写动态字符串
from webmagic.
part2有 进展么?不知何时能发出
from webmagic.
没有看到针对多个任务同时运行的压力控制和集群调度的功能啊
from webmagic.
请教一下,您文中那样子的图是怎么画出来的呢
from webmagic.
请教一下,您文中那样子的图是怎么画出来的呢
from webmagic.
@gujiahong @medusar 应该是这个工具吧:https://balsamiq.com/products/mockups/
from webmagic.
我是新手,正好跟进
from webmagic.
我可以提供JOB调度部分 :)
https://github.com/jeff-dong/marble
from webmagic.
@gsh199449 必须赞!
from webmagic.
和您一起学习
from webmagic.
很不错的项目,希望能加入!
from webmagic.
不错不错
from webmagic.
我可以一起做,我正在使用这个项目,也在考虑做一个基于这个项目的管理。希望能一起。
from webmagic.
今天老板就让我一个人做一个这样的东西,我正在路上
from webmagic.
大牛,还在维护吗?我来自一家大型互联网电商公司,公司有这方面的投入,希望能跟您联系上。
不缺资源,希望能合作。QQ:77720370
from webmagic.
前来观望,祝作者成功
from webmagic.
不错的,顶你一下,贡献无穷
from webmagic.
前来膜拜大神
from webmagic.
学习
from webmagic.
进展如何了?
from webmagic.
太遗憾了,这个项目还是夭折了
from webmagic.
太遗憾了,这个项目还是夭折了
关闭这个 issue 的原因应该是因为已经有第三方的实现了,没有必要再做一个重复的:
#43 (comment)
from webmagic.
今天老板就让我一个人做一个这样的东西,我正在路上
做得怎么样了,我也有此需求
from webmagic.
毕业设计准备做一个分布式爬虫+web端管理+小程序展示,前来取经
from webmagic.
from webmagic.
from webmagic.
Related Issues (20)
- There's a code injection vulnerability of `us.codecraft.webmagic.downloader.PhantomJSDownloader`
- java.lang.OutOfMemoryError: Java heap space HOT 1
- HttpClientDownloader download error HOT 1
- WebMagic Extension version 0.9.0 has CVE-2023-2976 vulnerability
- 请教怎样实现一个基于数据库的Scheduler? HOT 3
- 请教怎样控制爬虫延时或者暂停? HOT 3
- 如何保持cookie不过期?
- 文档中的图片都变破图了,请修复,谢谢! HOT 1
- 启动时,自定义参数放在Request后面接收不到 HOT 2
- 如何在PageProcessor.process中,将page.getHtml()的内容传入至Xpath2Selector HOT 1
- 多久支持playwright
- 希望作者支持一下动态重试? HOT 3
- 使用RedisScheduler会报找不到rpush方法,使用默认的Schduler正常。 HOT 1
- 循环点击下一页,并设置循环结束条件
- 希望作者可以将doCycleRetry改成protect访问级别 HOT 2
- doCycleRetry not working when using immutable maps in extras
- 最新版本中测试用例无法运行:us.codecraft.webmagic.samples.HuabanProcessor HOT 1
- 爬取百度百科需要耗时100多秒,请问怎么解决
- 访问https form方式传参的post接口报错javax.net.ssl.SSLException: Connection reset
- 请求本地服务 响应报:400 Bad Request
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from webmagic.