手把手教你写网络爬虫(2):迷你爬虫架构-通用网络爬虫

开发 后端
对于有一定基础的读者,请不要着急,以后我们会学习主流的开源框架,打造出一个强大专业的爬虫系统!不过在此之前,要继续打好基础,本期我们先介绍爬虫的种类,然后选取最典型的通用网络爬虫,为其设计一个迷你框架。有了自己对框架的思考后,再学习复杂的开源框架就有头绪了。

[[229264]]

介绍 

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

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

[[229265]]

语言&环境 

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

   

 

 [[229267]]

 

  

  

 

一个迷你框架 

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

 

代码结构:

 

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

 

 

 

 

  

url_table.py 

  

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

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

crawl_thread.py

 

 

 

  

Step 5. 页面分析模块 

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

Step 6. 页面存储模块 

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

webpage_save.py

 

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

下一步 

基础知识的学习暂时告一段落,希望能够帮助大家打下一定的基础。下期开始为大家介绍强大成熟的爬虫框架Scrapy,它提供了很多强大的特性来使得爬取更为简单高效,更多精彩,敬请期待! 

责任编辑:庞桂玉 来源: Python开发者
相关推荐

2018-05-14 16:34:08

Python网络爬虫Scrapy

2018-05-22 15:30:30

Python网络爬虫分布式爬虫

2018-05-16 13:50:30

Python网络爬虫Scrapy

2018-05-16 15:46:06

Python网络爬虫PhantomJS

2018-05-22 16:28:46

Python网络爬虫URL去重

2018-05-14 14:02:41

Python爬虫网易云音乐

2020-07-10 08:24:18

Python开发工具

2021-09-01 14:49:48

curl2pypython工具

2021-01-30 10:37:18

ScrapyGerapy网络爬虫

2021-04-01 09:02:38

Python小说下载网络爬虫

2021-11-09 09:01:36

Python网络爬虫Python基础

2022-03-30 09:11:00

Python网络爬虫

2020-11-10 09:11:02

采集数据

2018-02-23 14:30:13

2018-05-09 09:44:51

Java分布式系统

2023-03-27 08:28:57

spring代码,starter

2022-09-20 07:02:20

网络爬虫反爬虫

2009-12-24 13:52:57

网络接入控制解决方案

2023-06-01 13:15:23

2024-11-27 06:31:02

点赞
收藏

51CTO技术栈公众号