1.什么是爬虫
网络爬虫,请求网站并提取数据的自动化程序
2.爬虫基本流程
发起请求
获取响应内容
解析内容
保存数据
3.什么是Request和Response?
4.Request中包含什么
请求方式
主要有Get,POST两种类型
另外还有HEAD,PUT,DELETE,OPTIONS等
请求URL
URL全称统一资源定位符,如一个网页文档、一张图片、一个视频等都可以用URL唯一来确定。
请求头
包含请求时的头部信息,如User-Agent,Host,Cookies等信息
请求体
请求时额外携带的数据
如表单提交时的表单数据
5.Response中包含什么
响应状态
有多种响应状态,如200代表成功,301代表跳转,404找不到页码,502服务器错误
响应头
如内容类型,内容长度,服务器等信息,设置Cookie等待
响应体
最主要的部分,包含了请求资源的内容,如网页HTML,图片二进制的数据等
import requests response = requests.get("http://www.baidu.com") print(response.text) print(response.headers) print(response.status_code) #响应体 headers = {'User-Agent': '''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\ (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'''} response = requests.get("http://www.baidu.com", headers = headers)
6.能抓怎样的数据
网页文本
如HTML文档,Json格式文本等
图片
获取到的是二级制文件,保存为图片格式
视频
同为二进制文件,保存为视频格式即可。
其它
只要是能请求到的,都能获取
7.怎样来解析
直接处理
Json解析:weibo
正则表达式
BeautifulSoup
PyQuery
Xpath
8.为什么我抓到的和浏览器看到的不一样
网页源代码是js渲染之后的代码,所以和我们抓到的代码不一样
9.怎样解决JavaScript渲染的问题
分析Ajax请求
Selenium/WebDriver:获得源代码与网页一样
Splash
PyV8,Ghost.py
怎样保存数据?
文本
纯文本,Json,Xml等
关系型数据库
如MySQL,Oracle,SQL Server等具有结构化表结构形式存储。
非关系型数据库
如MongoDB,Redis等Key-Value等形式村相互
二进制文件
如图片,视频,音频等等直接保存成特定格式即可