版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
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等形式村相互 - 二进制文件
如图片,视频,音频等等直接保存成特定格式即可