简单来说,一个爬虫的工作流程可以分为以下三个步骤(以及每个步骤应该处理的问题)
第一步,发起网络请求
怎样处理需要登录的操作?
反爬虫的机制有哪些,如何避免反爬虫?
如何用队列批量处理网络请求?
网络请求中经常用到的库有哪些?
为什么要用IP代理,如何构建自己的IP代理池?
你的UA库、COOKIE池是怎样的?
如何异步处理网络请求?
如何科学的优化网络请求?
以上种种,为了不被反爬虫机制干掉,所以我们要尽量模仿真实用户的网络请求。
第二步,解析获取的数据,提取你想要的内容
如何提取目标内容,有哪些常用的库?
如何获取需要js渲染的网页内容?
如何处理分页数据?
第三步,持久化,将数据存储到文件系统或数据库中
如何存储到文件?
如何存储到数据库?
通过以上对爬虫工作过程的分析,那么一个简单的爬虫框架主要分成四个部分:
1、UrlQueue
URL管理器,对将要爬取的和已经爬取的URL进行管理。
2、Fetcher
网页下载器,从UrlQueue中获取一个URL,传给网页下载器,下载器将URL指向的网页内容下载下来。
3、Parser
网页解析器,将Fether下载的内容进行解析,一方面获取目标数据,另一方面获取需要的URL,补充到UrlQueue中去。
4、Saver
持久化,将数据存储到文件系统,或者数据库中。