想要采集一些网上的数据,网上都推荐Scrapy框架,我看了一下官方文档与网上的文章但是其中还是几个地方一头雾水,想要整理一下学习思路,初学者,有些东西都是只是想法,不正确请指点,一起讨论。
Scrapy框架感觉只是提供了一个爬虫解决方案的壳子,官方只给出了简单情况的使用方法,你可以使用中间件或者修改配置应对更多的情况,我觉得这样就是为了应对复杂并不断成长的爬虫领域,想法挺好的。
爬虫制作主要解决3件事情:
1、针对网站结构与页面分析写出能遍历所有页面与数据的Spider;
2、编写对爬到的数据清洗、去重、重构后并保存下来的Item Pipeline;
3、采集网站的启动周期,优先度、采集频率等设置,采集网站数据采集完成状态,完成时间展示;
Spider制作过程:
给出初始URL地址,下载器完成后对页面分析结构,比如要采集首页是列表,分析分页数据制作分页url连接,发送新页的采集URL地址,保存列表数据到Item,分析并发送详细页采集URL地址,详细页数据采集后保存到Item。
(我的理解:列表页与详细页是不是都应该放到一个Spider实现,也就是关于这个网站的一个采集信息项目都放到一个Spider中,比如列表与详细页面,详细页做成一个新函数,列表采集只是重复调用)
数据存储Item PipeLine制作过程:
把Spider采集到的Item进行数据库保存,数据保存前进行清洗,比如去重,数据格式标准化,分别处理全量采集数据保存,增量采集数据保存,更新数据的数据保存。
(Item只是定义保存的数据结构吗?PipeLine中是数据存储的方式,数据清洗与保存方法应该放到PipeLine中吗?Item与PipeLine如何关联起来的呢?)
采集网站的启动周期,优先度、采集频率等设置,采集网站数据采集完成状态,完成时间展示:
Spider的启动方式只能通过使用scrapy命令参数的方式调用吗?这样是不是只能通过编写shell或者Python程序然后通过命令的方式执行呢?启动周期、优先度、采集频率在什么地方设置,如何获得采集网站的完成状态与完成时间,
比如失败后重复采集降低优先度这种操作如何操作?我看文档了解官网没有Web方式管理的平台,ScrapyD是做什么用的?我了解到SpiderKeeper是一个Python写的维护Scrapy任务的Web系统,还有类似的或者PHP编写的项目吗?
写了很多如果能找到可以参考的开源项目就好了,欢迎熟悉爬虫采集的高手来解惑。
Scrapy 的操作问题基本上看一遍官网文档接合例子都可以明白,之前想把Scrapy的整个采集流程串联起来了解这个框架怎么样,主要集中在“采集网站的启动周期,优先度、采集频率等设置,采集网站数据采集完成状态,完成时间展示”,后来查找网上的文章发现官网提供ScrapyD这个解决方案,服务运行后提供了一些Http的访问接口,可以完成控制任务调度,监视任务状态的功能,自己做一个界面UI调用ScrapyD提供的接口就可以了。另外网上有几套已经完成的框架参考:SpiderKeeper、Tiktok 、django-dynamic-scraper
参考网站:https://www.cnblogs.com/zhong...
希望对想要了解Scrapy的朋友有个大体的脉络了解,Scrapy能解决什么问题,哪些需要用到其他库帮助,自己需要做哪些工作。