Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问这个库与superagent+cheerio方式实现爬虫相比有什么特点呢 #13

Open
DaveGeneral opened this issue Dec 7, 2019 · 4 comments

Comments

@DaveGeneral
Copy link

DaveGeneral commented Dec 7, 2019

Hi, xiyuan, I admire your work, I‘m a student on web spider, I usually make the crawler by request or superagent+ cheerio method, and sometimes use async + redis also, when I look at your examples using ppspider, it seems not easy and the coding length is not shorter at all when crawlerring a specific web page, so I want to ask a basic and general question, what's the advantage on this tool and how can I use it more efficiently?

@DaveGeneral
Copy link
Author

maybe you can share a more clear instruction in detail in your spare time, thanks a lot!

@xiyuan-fengyu
Copy link
Owner

在我的日常的爬虫实践中,麻烦的地方的并不是网页内容分析和接口分析,而是各种子任务的管理,结果的保存,爬虫的工作情况的查看和控制,工作情况的保存,以及结果的展示等,所以我就把这些重复的工作提取出来形成了一个框架。
1.这个框架提供了爬虫工作过程中的重要功能,例如:队列管理,对于复杂的爬取任务,可能是多个子任务构成的,每个子任务都有相应的队列需要管理,这个框架通过装饰器的方式简化了队列的相关配置(并发,超时,时间间隔等),简化了队列的任务添加(AddToQueue),透明化任务的派发(FromQueue),在往队列中添加任务时,提供了过滤器接口,用来过滤重复任务(目前框架只提供了两种实现,NoFilter不过滤,BloonFilter通过job的key/url过滤),用户可以根据自己的特殊需要定义额外的过滤器,队列的实现现在有FIFO和优先级队列,用户也可以根据需要定义自己的队列。通过OnStart,OnTime,AddToQueue,FromQueue的组合,可以把一个复杂的任务分解为多个小任务,逐个解决,思路清晰。
2.puppeteer,cheerio不是框架强制要求使用的爬取解析工具;在这个框架里面,你可以使用任何你想使用的请求和解析的工具,puppeteer是通过factory的方式提供page(woker)来工作,cheerio是直接在任务过程中结合RequestUtil来解析静态html;puppeteer主要用于动态网页信息抓取,cheerio用于静态网页信息抓取;框架中对puppeteer的一些特性进行了改造,在factory中构建page对象时,做了一些修改,另外在PuppeteerUtil提供了一些常用的方法。
3.提供了运行状态的保存功能,重启后可以继续运行;停止任务时需要在网页管理界面停止系统并保存状态。
4.提供了网页管理界面,可以实时查看队列工作情况;另外通过DataUi提供了用户自定义数据交互的功能,方便实时展示数据,提供开发自定义交互工具的方案。
5.数据的保存非常方便,通过appInfo.db可以完成,是对nedb和mongodb的统一封装。

@DaveGeneral
Copy link
Author

在我的日常的爬虫实践中,麻烦的地方的并不是网页内容分析和接口分析,而是各种子任务的管理,结果的保存,爬虫的工作情况的查看和控制,工作情况的保存,以及结果的展示等,所以我就把这些重复的工作提取出来形成了一个框架。
1.这个框架提供了爬虫工作过程中的重要功能,例如:队列管理,对于复杂的爬取任务,可能是多个子任务构成的,每个子任务都有相应的队列需要管理,这个框架通过装饰器的方式简化了队列的相关配置(并发,超时,时间间隔等),简化了队列的任务添加(AddToQueue),透明化任务的派发(FromQueue),在往队列中添加任务时,提供了过滤器接口,用来过滤重复任务(目前框架只提供了两种实现,NoFilter不过滤,BloonFilter通过job的key/url过滤),用户可以根据自己的特殊需要定义额外的过滤器,队列的实现现在有FIFO和优先级队列,用户也可以根据需要定义自己的队列。通过OnStart,OnTime,AddToQueue,FromQueue的组合,可以把一个复杂的任务分解为多个小任务,逐个解决,思路清晰。
2.puppeteer,cheerio不是框架强制要求使用的爬取解析工具;在这个框架里面,你可以使用任何你想使用的请求和解析的工具,puppeteer是通过factory的方式提供page(woker)来工作,cheerio是直接在任务过程中结合RequestUtil来解析静态html;puppeteer主要用于动态网页信息抓取,cheerio用于静态网页信息抓取;框架中对puppeteer的一些特性进行了改造,在factory中构建page对象时,做了一些修改,另外在PuppeteerUtil提供了一些常用的方法。
3.提供了运行状态的保存功能,重启后可以继续运行;停止任务时需要在网页管理界面停止系统并保存状态。
4.提供了网页管理界面,可以实时查看队列工作情况;另外通过DataUi提供了用户自定义数据交互的功能,方便实时展示数据,提供开发自定义交互工具的方案。
5.数据的保存非常方便,通过appInfo.db可以完成,是对nedb和mongodb的统一封装。

thanks for your enthusiastic description, it helps a lot!

@xiyuan-fengyu
Copy link
Owner

你可以尝试用superagent+cheerio来实现 这个例子 的完整功能,对比一下就知道两者的差别

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants