初识爬虫
爬虫的概念:
爬虫,又称网页蜘蛛或网络机器人。
爬虫是模拟人操作客户端,向服务器发起网络请求,抓取数据的自动化程序或脚本。
1.模拟:用爬虫程序伪装人的行为,避免被服务器识别为爬虫程序。
2.客户端:浏览器,app都可以实现人与服务器之间的交互行为,应用客户端从服务器获取数据。
3.自动化:数据量较小时可以人工获取数据,但往往在公司中爬取的数据量在百万条,千万条级别的,所以要程序自动化获取数据。
爬虫的价值 :
互联网中最有价值的就是数据
爬虫中首要任务就是要通过网络取获取模板服务器的数据;来为自己创造价值
爬虫的流程:
首先明确 我们的爬虫是客户端 要爬的数据在服务器上存储,
所以需要借助网络编程,底层的网络协议已经有现成的封装不需要自己写,
数据传输已经解决,问题是对方给我的数据我能不能看懂 我的数据对方能不能看懂
绝大多数网络传输都是采用的HTTP(*****)
爬虫分类:
1. 通用爬虫
实例:百度,google
功能:访问网页->抓取数据->数据处理->提供检索服务
2. 聚焦爬虫:
概念:
1):聚焦爬虫是指针对某一领域根据特定要求实现的爬虫程序,抓取需要的数据(垂直领域爬取)。
设计思路:
1):确定爬取的url,模拟浏览器向服务器发送请求获取响应数据
2):进行数据解析-->目标数据
3):将目标数据持久化到本地-->存起来
HTTP 协议 超文本传输协议:
1.明确要爬取的url地址
2.发送请求
浏览器发送请求
第三方requests模块 pip install requests
内置的urllib模块selenium (自动化测试模块)
用程序驱动浏览器发送请求针对移动app可以使用代理服务器
可以截获app端发送的请求信息 Charles(青花瓷)之所以用selenium是因为一些网站需要人机交互(点击,拖拽等等操作)
针对移动app可以使用代理服务器 可以截获app端发送的请求信息 Charles(青花瓷)
3.接收响应
浏览器接受相应后会渲染页面进行展示 无法拿到数据 所以更多情况下使用用浏览器来分析请求详情
requests和urllib都会直接返回响应体
selenium 提供了find_element***的接口用于获取数据
4.解析数据
re
BeautifulSoup 封装了常用的正则表达式
移动端返回的/ajax返回的json数据 直接json.load
5.存储数据
mysql等 关系型数据库
MongoDB redis 非关系型数据库 一般用在高并发爬虫中
数据采集:
大数据时代来临,数据就是核心,数据就是生产力,越来越多的企业开始注重收集用户数据,而爬虫技术是收集数据的一种重要手段。
数据的获取:
网络公共资源都是为用户准备的,为了避免被爬虫采集,服务端会设置非常多的图灵测试,阻止爬虫的恶意爬取,也即是反爬措施。爬虫开发工程师在开发爬虫时,需要解决这些反爬措施。我们在开发爬虫的过程中,有很大一部分的工作就是处理这些反爬措施。
采集的速度:
大数据时代,需要巨大的数据量,动辄千万条的级别,甚至上亿条。如果采集速度跟不上,耗时过长,那么就达不到商业要求。一般我们会采取并发以及分布式来解决速度上的问题。这也是爬虫开发过程中的另外一个重心。