网络爬虫教程(2):迷你框架设计

网络爬虫教程(2):迷你框架设计,第1张

回顾上一期,我们在介绍了爬虫的基本概念之后,就利用各种工具横冲直撞的完成了一个小爬虫,目的就是猛、糙、快,方便初学者上手,建立信心。对于有一定基础的读者,请不要着急,以后我们会学习主流的开源框架,打造出一个强大专业的爬虫系统!不过在此之前,要继续打好基础,本期我们先介绍爬虫的种类,然后选取最典型的通用网络爬虫,为其设计一个迷你框架。有了自己对框架的思考后,再学习复杂的开源框架就有头绪了。

今天我们会把更多的时间用在思考上,而不是一根筋的coding。用80%的时间思考,20%的时间敲键盘,这样更有利于进步。

语言&环境

语言:带足d药,继续用Python开路

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第2张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第3张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第4张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第5张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第6张

一个迷你框架

下面以比较典型的通用爬虫为例,分析其工程要点,设计并实现一个迷你框架。架构图如下:

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第7张

代码结构:

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第8张

config_load.py 配置文件加载

crawl_thread.py 爬取线程

mini_spider.py 主线程

spider.conf 配置文件

url_table.py url队列、url表

urls.txt 种子url集合

webpage_parse.py 网页分析

webpage_save.py 网页存储

看看配置文件里有什么内容:

spider.conf

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第9张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第10张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第11张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第12张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第13张

url_table.py

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第14张

Step 3. 记录哪些网页已经下载过的小本本——URL表。

在互联网上,一个网页可能被多个网页中的超链接所指向。这样在遍历互联网这张图的时候,这个网页可能被多次访问到。为了防止一个网页被下载和解析多次,需要一个URL表记录哪些网页已经下载过。再遇到这个网页的时候,我们就可以跳过它。

crawl_thread.py

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第15张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第16张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第17张

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第18张

Step 5. 页面分析模块

从网页中解析出URLs或者其他有用的数据。这个是上期重点介绍的,可以参考之前的代码。

Step 6. 页面存储模块

保存页面的模块,目前将文件保存为文件,以后可以扩展出多种存储方式,如mysql,mongodb,hbase等等。

webpage_save.py

网络爬虫教程(2):迷你框架设计,网络爬虫教程(2):迷你框架设计,第19张

写到这里,整个框架已经清晰的呈现在大家眼前了,千万不要小看它,不管多么复杂的框架都是在这些基本要素上扩展出来的。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2718076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存