python 爬虫简介

爬虫是什么?

就是一段可以帮助人类浏览网页/app/小程序并且从网页/app/小程序中抽取所需数据的代码

为什么需要爬虫?爬虫的用途?为什么用python?

1. 自动化获取数据,减少人力
2. 解决大数据数据源的问题
3. 数据分析与数据挖掘的数据源
4. 搜索引擎需要采集数据作为数据源  百度   谷歌
5. 胶水语言 调用各种库 其他语言(java php js)

爬虫的分类

1. 通用爬虫(大而全)
		功能强大,采集面广,用于搜索引擎
2. 聚焦爬虫(小而精)
		功能单一(只针对特定网站,特点数据的采集),99%的爬虫
3. 增量式爬虫(只采集更新数据)
		一定有区分新老数据的区别

君子协议

1. 在网站的根目录(域名)下,放置一个robots.txt文件,在文件中,规定爬虫可以采集哪些数据,不能采集哪些数据
	注意:君子协议,从技术上不做限制,如果不遵守君子协议,采集的数据如果用于商用,且是竞品,做好被告的准备,如果没有君子协议,默认可以全采集。如果不用于商用,基本不用考虑

爬虫的原理以及流程

1. 一切以数据为导向
2. 请求---响应

常见的反爬

UA检测、cookie验证、验证码、滑块验证码、ip代理、多账号、js逆向、app逆向

高阶爬虫所具备的技术

Python+Js(js逆向) + IP代理池 +java(app逆向)+算法AI(验证码图像识别 rnn循环神经网络)
爬虫的效率问题:
单线程(阻塞),多线程(并不是真正意义上的并行,由于GIL锁),多进程(并行)和协程(非阻塞,异步 并发)
实际任务中多采用  多线程+异步  分布式
Python GIL锁
	Cpython(解释器c语言实现部分)进程与其运行文件所产生的主进程是一个进程(文件进程相当于Cpython的一个线程)
	线程的特点是数据资源是共享的,而多个线程又都要共享Cpython的解释权限,共享意味着竞争,有竞争数据就不安全,
	所以Cpython的GIL锁(Cpython的一个线程)
	就产生了,根本作用是,当python文件中的线程想要执行其代码,必须获得GIL权限,否则不能执行,
	所以cpu的多核优势也没有了,除非多开Cpython解释器或多进程,否则同时只能运行一个线程

爬虫程序(通用步骤)

1. 如何发一个get请求
在python内置包urllib的request的包里的urlopen方法
2. 如何发一个post请求
在urlopen方法中传入data参数
3. 如何解析响应
	1. html
	第三方的类库lxml  cpython编写  效率快  可以解析html,xml
	pip install lxml
	from lxml import etree
	使用xpath语法来获取数据
		1. 基本语法
            nodename    获取对应的标签
            //          从根目录开始选择
            @属性名      获取属性值
            /           表示从当前对象开始选择
            []          筛选元素
		2. 内置函数
			text()	   获取标签内的文本数据
	    3. 元素选择
	        |      多个xpath一起使用 
	        and    选择元素的时候使用,表示并且
	        or     选择元素的时候使用,表示或者
	2. json
	3. IO流

采集贝壳二手房

需求:采集贝壳全国二手房
思路:
1. 构造列表页的请求
	1. 自动更换城市
	2. 自动翻页
	3. 代码异常的处理(不是所有请求都能发送成功)
	4. 采集进度的记录(断点续传)
2. 处理列表页的响应
	抽取详情页的url
3. 发送详情页请求  直接发请求
4. 处理详情页的响应  xpath解析

python拓展(应用方向)

Python方向
自动化测试、运维
	Selenium、requests
Web开发
	Python 有很多现成的 Web 开发框架,几行代码就能生成一个功能齐全的 Web 服务。
	比较著名的就是 Django 和 Flask。
	Django 集成的功能更多,开箱即用,好比全副武装的战士。
	Flask 轻量快速,只包含核心功能,其他都需要自行扩展,好比轻装上阵的刺客。
	例子:
		1.国内--豆瓣、知乎、春雨医生、拉钩
		2.国外--NASA:美国航天局(NASA)大量使用Python进行数据分析和运算,YouTube:世界上最大的视频网站YouTube,Facebook:大量的基础库均通过Python实现,
	现在国内外已经有许多使用Python进行Web开发的企业。不过,使用Python做Web开发,主要都是为了能够快速开发对并发量要求不是特别高的应用。
Python数据分析、挖掘
	Python数据分析需要安装的第三方扩展库有:
		1.Numpy:Python没有提供数组功能,Numpy可以提供数组支持以及相应的高效处理函数,是Python数据分析的基础
		2.Pandas:Pandas可使Python中处理数据非常快速和简单
		3.SciPy:是一组专门解决科学计算中各种标准问题域的包的集合,包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算等,这些对数据分析和挖掘十分有用。
		4.Matplotlib:是强大的数据可视化工具和作图库,是主要用于绘制数据图表的Python库,提供了绘制各类可视化图形的命令字库、简单的接口,可以方便用户轻松掌握图形的格式,绘制各类可视化图形。
		5.Scikit-Learn:是Python常用的机器学习工具包,提供了完善的机器学习工具箱,支持数据预处理、分类、回归、聚类、预测和模型分析等强大机器学习库,其依赖于Numpy、Scipy和Matplotlib等。
		6.Keras:是深度学习库,人工神经网络和深度学习模型,基于Theano(Theano是一个Python库,可以在CPU或GPU上运行快速数值计算。 这是Python深度学习中的一个关键基础库)之上,依赖于Numpy和Scipy,利用它可以搭建普通的神经网络和各种深度学习模型,如语言处理、图像识别、自编码器、循环神经网络、递归审计网络、卷积神经网络等。(TensorFlow的高阶封装,还有一个更加高级的框架CAFFE,据说很厉害。)
		7.Gensim:是用来做文本主题模型的库,常用于处理语言方面的任务,支持TF-IDF、LSA、LDA和Word2Vec在内的多种主题模型算法,支持流式训练,并提供了诸如相似度计算、信息检索等一些常用任务的API接口。
		8.Scrapy:是专门为爬虫而生的工具,具有URL读取、HTML解析、存储数据等功能,可以使用Twisted异步网络库来处理网络通讯,架构清晰,且包含了各种中间件接口,可以灵活的完成各种需求。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值