爬虫基本架构
-
一个网络爬虫的简单架构包括
1.爬虫调度端:开启爬虫程序
2.爬虫程序(其中包括三部分)
URL管理器 管理待爬取的和已爬取的URL
网页下载器 把爬取的网页下载到本地,储存成一个字符串
网页解析器 把储存的字符串送给解析器进行解析
3.数据整合分析
得到 1)有价值的数据
2)网页中包含的其他网页的URL,再把它们补充进URL管理器中
-
这个简单爬虫架构的运行流程(如下图)
调度器是爬虫程序中三个子程序(管理器,下载器,解析器)的直接交互对象,每次运行一个子程序,会把结果返回给调度器,调度器在发送相应指令给该子程序。
所以调度器是爬虫运行的推动程序,控制着整体的进程,爬取过程就是调度器不断运行,不断按照次序激活相应子程序的循环过程 - URL管理器简介
功能:管理两类URL的集合
1)待抓取的URL
2)已抓取的URL
作用:防止重复抓取和循环抓取
实现方式
-----把两类URL集合存储在什么地方?
1)直接存到python内存中
2)存储在关系型数据库(mySQL)中
3)存储在缓存数据库redis中
大型企业级常用redis,小型公司或个人用mySQL或直接用内存即可
- 网页下载器简介
-
两种常用网页下载器
下面的内容都是python官方的urllib2模块使用方法(urllib2是基础,前期练习阶段先抓住这个库学习,学通了以后再进军更强大的Requests库) - 第一步:最基本的功能--通过URL直接抓取
urllib2以urlopen函数的形式提供了一个非常简单的接口
1.直接请求方式(最简单的)
----用urllib2.open()方法直接打开
对应代码实例import urllib2 response = urllib2.urlopen('http://www.baidu.com/') html = response.read() print html
2. 发送间接请求
用一个Request对象来映射你提出的HTTP请求,即用你要请求的地址创建一个Request对象。通过调用urlopen并传入Request对象,将返回一个相关请求response对象,这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。
import urllib2
req = urllib2.Request('http://www.baidu.com')
response = urllib2.urlopen(req)
the_page = response.read()
print the_page
-
第二步:增强处理
1.发送data表单数据
2.设置Headers到http请求 - 第三步:添加特殊情景处理器
点击查看更多内容
11人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦