爬虫的基础知识
- 概念:网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做
- 分类:爬虫分为通用爬虫和聚焦爬虫
- 通用爬虫 :通常指搜索引擎的爬虫
- 聚焦爬虫 :针对特定网站的爬虫
http和https
- http超文本传输协议,是基于C/S架构进行通信的协议,运行在在tcp之上的应用层协议,默认端口80。http是无状态协议
- 请求(响应)形式:请求头+空行+请求体
- https协议是在http协议之上封装了一个安全套接字层(ssl)。默认端口443https比http更安全,但是性能更低
- 浏览器会主动请求js,css等内容,js会修改页面的内容,js也可以重新发送请求,最后浏览器渲染出来的内容在elements中,其中包含css,图片,js,url地址对应的响应等。但是在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应浏览器渲染出来的页面和爬虫请求的页面并不一样
所以在爬虫中,需要以url地址对应的响应为准来进行数据的提取 - 常见请求头
Host (主机和端口号)
Connection (链接类型) Upgrade-Insecure-Requests (升级为HTTPS请求)
User-Agent (浏览器名称) ,访问服务器的是何种浏览器
Accept (传输文件类型)
Referer (页面跳转处)
Accept-Encoding(文件编解码格式)
Cookie (Cookie)
x-requested-with:XMLHttpRequest (是Ajax 异步请求)
- 常见的状态码:
200:成功
391:Moved Permanently:请求资源的URL被永久的改变,新的URL会在响应的Location中给出。
302:临时转移至新的url
307:临时转移至新的url基本和302一样
403 Forbidden: 服务器拒绝响应。权限不足。
404:not found
500:服务器内部错误
初识request模块
- request是第三方模块,需要先安装
- request简单使用示例
import requests
url = "https://www.baidu.com"
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
}
response = requests.get(url,headers=headers)
print(response)
# 检查响应头
print(response.headers)
print(response.status_code)
print(response.url)
# 检查请求头
print(response.request.headers)
# 检查响应源码
print(response