爬虫概念
是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,简单来说就是一个网络机器人,是一个程序
爬虫执行流程
1.提交url给网站服务器,服务器会响应一个信息给客户端
2.解析网页(提取我们需要的有用信息)
3.保存信息,保存到文本文档,mysql数据库,EXCEL
爬虫分类
- 1.通用网络爬虫: 由种子url扩展到整个web
策略:深度优先,广度优先- 2.聚焦网络爬虫:爬取某个主题的网页
- 3.增量式网络爬虫: 监测某网站数据更新的情况,以便可以爬取到该网站更新出的新数据
- 4.深层网络爬虫: 需要模拟提交表单
表层网页:不需要提交表单,使用静态的链接就能够到达的静态网页
深层网页:隐藏在表单后面,不能通过静态链接直接获得,是需要提交一定的关键词之后才能够获取得到的网页。
爬虫的合法性
遵循robots.txt协议
这个文件通常在网站根目录存放,如百度的就在https://www.baidu.com/robots.txt存放
[外链图片转存失败(img-p7NJKh45-1564032734184)(https://raw.githubusercontent.com/kevinlu98/cloudimg/master/data/QQ20190725-092440@2x.png)]
反爬虫
顾名思义: 就是防止网络爬虫
策略:
- 1.通过User-Agent检验反爬
- 2.通过访问频率反爬(睡眠库:time库)
- 3.通过验证码反爬
- 4.通过变换网页结构
- 5.通过账号权限反爬
##对应反爬取策略
1.模拟User-Agent
2.调整频度
3.使用代理ip
4.模拟登陆
5.结构变换前,爬取所有信息
我们的第一个爬虫程序
环境准备
- 创建虚拟环境,以conda为例
conda create --name=spider python=3.6
- 虚拟环境创建成功后,激活虚拟环境
source activate spider
此时你终端上会显示当前虚拟环境的名称
原生urllib3库的方式
-
如果没有urllib3可以通过在虚拟环境中执行
pip install urllib3
安装# @File: code01.py # @Author: lengwen # @Time: 2019-07-25 09:46 # @Desc: 使用原生urllib3库的方式进行爬虫 import urllib3 # 生成一个HTTP请求对象, 由该对象处理与线程池的连接以及线程安全的所有细节 http = urllib3.PoolManager() # 发送HTTP请求 resp = http.request(url='http://www.163.com',method='get') # 打印响应对象 print(resp) # 打印响应状态码 print(resp.status) # 打印响应数据 print(resp.data)
输出结果
[外链图片转存失败(img-4jndSieD-1564032734186)(https://raw.githubusercontent.com/kevinlu98/cloudimg/master/data/QQ20190725-095658@2x.png)]
可以看到我们响应数据是字节数据,我们需要对其进行解码
我们可以注意到在返回数据中有这么一句话,对HTML有了解的同学应该知道在编写网页的时候在head中需要指定其编码(当然后面有专门的库用来获取编码),也就是说我们可以通过gbk对其进行解码
完整程序
# @File: code01.py # @Author: lengwen # @Time: 2019-07-25 09:46 # @Desc: 使用原生urllib3库的方式进行爬虫 import urllib3 # 生成一个HTTP请求对象, 由该对象处理与线程池的连接以及线程安全的所有细节 http = urllib3.PoolManager() # 发送HTTP请求 resp = http.request(url='http://www.163.com',method='get') # 打印响应对象 print("响应对象") print(resp) # 打印响应状态码 print("状态码") print(resp.status) # 打印响应数据 # print("响应数据") # print(resp.data) # 解码 data = resp.data.decode('gbk') print("解码后的数据") print(data)
结果
[外链图片转存失败(img-rbxgvrFA-1564032734187)(https://raw.githubusercontent.com/kevinlu98/cloudimg/master/data/QQ20190725-100224@2x.png)]
我们的第一个爬虫程序结束,希望对大家有所帮助