第一篇:爬虫初识
认识爬虫
爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。通俗点说就是请求网站并提取数据的自动化程序。
爬虫基本流程
- 向服务器发起请求
- 获取服务器的响应内容
- 解析内容
- 保存数据
请求与响应
我们要获取服务器的数据,那么我们必须先向服务器发送请求信息。假设服务器有香蕉这种水果的信息,而我们需要香蕉的信息,那么我们就要写一封申请书告诉服务器,我们要香蕉的信息。接下来,如果服务器接收到我们的申请书,就向我们发回一封回信,告诉我们关于香蕉的信息。这个过程中,申请书就是Request——请求,服务器发回的回信就是Response——响应。申请书和回信不仅只有正文,也有信封,邮票之类的。相同地,Request和Response也包含着很多东西。我们可以简单叙述一下。
Request
- 请求方式:常用的有
get
和post
; - 请求URL:简单地来说就是网站网址;
- 请求头
- 请求体:
get
一般不带,post
会携带
Response
- 响应状态:网站的响应状态,正常访问是200,常见的404错误就是其中的一种;
- 响应头
- 响应体:主要部分,告诉我们香蕉是什么;
能抓取什么数据
- 网页文本
- 图片
- 视频
- 其他数据
网上的数据只要你想抓取,又可以解析,就可以获取到了。图片、视频主要是以二进制的方式进行读写。
怎么解析
什么是解析呢?我们从服务器获取到的数据,一般是一些HTML文件,服务器一般不会只给你你想要的有效数据(还包含一下其他杂乱数据),要获取里面的有效数据,就必须用适当的工具进行清洗,这个过程就是解析了。
有哪些什么解析的方式?
- 直接处理
- JSON解析
- 正则表达式
- BeautifulSoup库解析
- PyQuery
- XPath
- ……
我们会按获取到的数据文件来选择以上几种解析方式。
怎么解决JS渲染问题
现在很多网站都是动态网站,页面数据的展现方式和静态网站不一样,动态网站的数据没有像静态网站那么暴露,而是经过javascript渲染过的,我们可以通过一下方式尝试解决问题。
- 分析Ajax请求
- Selenium/webDrive
- Splash库模拟javascript渲染
- pyv8,Ghost.py
保存数据
爬取回来的数据进过解析可以获得我们需要的干净数据,我们就利用工具把它保存起来。有一下几种保存方式:
1. 文本
2. 关系型数据库
3. 非关系型数据库
4. 二进制文件(图片、视频)
以上便是爬虫的基本流程了,预要看如何运用python库向服务器发送请求,请看下回分解。