一、概念及组成
1.爬虫,一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。
2.Python 爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)。
(1)调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。
(2)URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL,实现URL管理器主要用三种方式,通过内存、数据库、缓存数据库来实现。
(3)网页下载器:通过传入一个URL地址来下载网页,将网页转换成一个字符串,网页下载器有urllib2(Python官方基础模块)包括需要登录、代理、和cookie,requests(第三方包)
(4)网页解析器:将一个网页字符串进行解析,可以按照我们的要求来提取出我们有用的信息,也可以根据DOM树的解析方式来解析。网页解析器有正则表达式(直观,将网页转成字符串通过模糊匹配的方式来提取有价值的信息,当文档比较复杂的时候,该方法提取数据的时候就会非常的困难)、html.parser(Python自带的)、beautifulsoup(第三方插件,可以使用Python自带的html.parser进行解析,也可以使用lxml进行解析,相对于其他几种来说要强大一些)、lxml(第三方插件,可以解析 xml 和 HTML),html.parser 和 beautifulsoup 以及 lxml 都是以 DOM 树的方式进行解析的。
(5)应用程序:就是从网页中提取的有用数据组成的一个应用。
二、爬虫适用的语言
PHP、C/C+、Java、Python
三、爬虫分类
1)、通用爬虫 :搜索引擎
1.功能: 访问网页 -> 抓取数据 -> 数据处理 -> 提供检索服务
2.工作流:
(1).给定一个起始URL, 存于爬取队列中
(2).爬虫程序从队列中取出url, 爬取数据
(3).解析爬取数据, 获取网页内的所有url, 放入爬取队列
(4).爬虫程序从队列中取出url, 爬取数据
4.缺点:获取的内容大多没有用处,不能精确的得到数据
5.协议: robots协议用来约定哪些内容允许哪些爬虫抓取
格式为:url/robots.txt,
如https://www.baidu.com/robots.txt等
2)、 聚焦爬虫
定义:聚焦爬虫指针对某一领域根据特定要求实现的爬虫程序, 抓取需要的数据(垂直领域爬取)
流程:
(1).确定爬取的url, 模拟浏览器请服务器发送请求
(2).获取响应数据并进行数据解析
(3).将目标数据持久化到本地
四、服务器常见端口
1.ftp: File Transfer Protocol的缩写, 即文件传输协议. 端口:21
2.ssh: Secure Shell的缩写, 用于远程登录会话. 端口:22
3.MySQL: 关系型数据库, 端口:3306
4.MongoDB: 非关系型数据库, 端口:27017
5.Redis: 非关系型数据库, 端口:6379
(其中,在项目创建的时候在settings配置中会用到端口号)
五、简单爬虫案例
import re
import requests
a = requests.get('http://www.521609.com/daxuexiaohua/')
# with open('text3.html','w',encoding='ISO-8859-1') as f :
# for i in a.text:
# f.write(i)
# f.close()
s = re.findall('<img src="/(.*)" width="160" ', a.text)
lit = []
for i in s:
h = 'http://www.521609.com/' + i
lit.append(h)
with open('text3.text', 'w', encoding='utf-8') as f:
for i in lit:
f.write(i)
f.write('\n')
f.close()