文章目录
-
- 1. 爬虫简介
- 2. requests 模块介绍
-
- 2.1 requests get 请求
-
- 基础使用
- 添加 params 参数
- 添加请求头
- 添加 cookie
- 2.2 post 请求
-
- 常见响应标头
- 携带数据
- 携带 json 数据
- request.session
- 2.3 response 属性
- 2.4 编码问题
- 2.5 获取二进制数据
- 2.6 解析 json
- 2.7 高级用法之 Cert Verification
- 2.8 代理
- 2.9 超时,认证,异常,上传文件
-
- 超时设置
- 异常处理
- 上传文件
- 3. 代理池
-
- 3.1 搭建简易代理池
- 3.2 django 后端获取客户端的 ip
- 4. 小案例
-
- 4.1 爬取视频
- 4.2 爬取新闻
- 4.3 爬取哔站视频
- 5. BeautifulSoup4 介绍
-
- 5.1 基本使用
- 5.2 遍历文档树
- 5.3 搜索文档树
-
- 5.3.1 五种过滤器
- 5.3.2 find_all( name , attrs , recursive , text , **kwargs )
- 5.3.3 find( name , attrs , recursive , text , **kwargs )
- 5.4 CSS选择器
- 6. selenium
-
- 6.1 selenium 介绍
- 6.2 安装
- 6.3 基本使用
- 6.4 查找元素
-
- 通过ID查找元素
- 通过Name查找元素
- 通过XPath查找元素
- 通过链接文本获取超链接
- 通过标签名查找元素
- 通过Class name 定位元素
- 通过CSS选择器查找元素
- 6.5 等待页面加载完成
-
- 显式等待
- 隐式等待
- 6.6 浏览器交互
-
- 点击
- 执行 JS 代码
- 获取位置、属性、大小和文本
- 切换选项卡
- 浏览器前进后退
- 异常处理
- 无界面浏览器
- 模拟百度登录、搜索
- 模拟博客园登录获取cookie
- 抽屉新热榜点赞
- 其他案例
- 7. 动作链
-
- 7.1 基础使用
- 7.2 12306 登录
1. 爬虫简介
爬虫一般指 络爬虫。 络爬虫(又称为 页蜘蛛, 络机器人,在FOAF 区中间,更经常的称为 页追逐者),是一种按照一定的规则,自动地抓取万维 信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫
大部分的软件 cs 或 bs,主流都是用 http 协议通信,实际上爬虫就是模拟发送 http 请求,例如 Postman 也可以模拟发送,爬虫则是在 python 中使用代码进行模拟发送请求。服务端把数据返回( html,xml,json ),在进行数据的清洗(re,bs4),清洗完后再入库(文件,mysql,redis,es,mongo)
python 中使用 可以模拟浏览器的请求,比起之前用到的 urllib,requests 模块的 api 更加便捷(本质就是封装了urllib3)
安装:
各种请求方式:常用的就是 requests.get() 和 requests.post()
2. requests 模块介绍
在 python 中模拟发送请求使用 requests 模块,或者使用 urllib 内置模块,但是其 api 使用复杂。
2.1 requests get 请求
HTTP默认的请求方法就是GET
- 没有请求体
- 数据必须在1K之内
- GET请求数据会暴露在浏览器的地址栏中
GET请求常用的操作:
- 在浏览器的地址栏中直接给出 URL,那么就一定是 GET 请求
- 点击页面上的超链接也一定是 GET 请求
- 提交表单时,表单默认使用 GET 请求,但可以设置为 POST
基础使用
添加 params 参数
例如路由中含 ‘谢帅哥’ 中文,复制下来为:
https://blog.csdn.net/m0_58987515ype=blog&name=%E8%B0%A2%E5%B8%85%E5%93%A5
添加请求头
常见的请求头参数有
参数 | 说明 |
---|---|
Host | 指明了服务器的域名及服务器监听的TCP端口 。 |
Referer | 告诉服务器该 页是从哪个页面链接过来。 |
Accept-Charset | 规定服务器处理表单数据所接受的字符集。(常用字符集有 UTF-8-Unicode等) |
Accept-Language | 告知服务器用户代理能够处理的自然语言集。 |
Authorization | 告知服务器客户端的Web认证信息。 |
User-Agent | 告知服务器HTTP 客户端程序的信息。 |
解决简单的反扒需要获取 user-agent 添加到请求头中,如下示例
添加 cookie
添加了 cookie 后会有登录信息,才能操作登录后相关操作。
- 携带的方式一:放在请求头中
- 使用 cookies 参数
Cookie信息虽然包含在请求头里,但requests模块有单独的参数来处理他,headers={}内就不要放它了,cookie 是 CookieJar 的对象
2.2 post 请求
POST请求
- 数据不会出现在地址栏中
- 数据的大小没有上限
- 有请求体
- 请求体中如果存在中文,需要使用URL编码
requests.post() 用法与 requests.get() 完全一致,特殊的是 requests.post() 有一个data参数,用来存放请求体数据
常见响应标头
标头 | 说明 |
---|---|
Keep-Alive | 表示 Connection 非持续链接的存活时间。 |
Server | 包含有关原始服务器用来处理请求的软件的信息。 |
Set-Cookie | 用于服务器向客户端发送 sessionID。 |
Transfer-Encoding | 规定了传输 文主题时采用的编码方式。 |
Location | 令客户端重定向至指定的URI。 |
WWW-Authenticate | 表示服务器对客户端的认证信息。 |
携带数据
请求的数据格式有:from-data、urlencoded(默认)、json

携带 json 数据
携带 json 数据可以在 json 参数中,如下所示
request.session
2.3 response 属性
repsonse对象的属性和方法,是把 http 的响应封装成了 response
属性方法 | 说明 |
---|---|
respone.text | 响应体的字符串 |
respone.content | 响应体二进制数据 |
respone.status_code | 响应状态码 |
respone.headers | 响应头 |
respone.cookies | 响应的 cookie |
respone.cookies.get_dict() | cookie 转成 dict |
respone.cookies.items() | cookie 拿出 key 和 value |
respone.url | 请求的地址 |
respone.history | 列表,有重定向,里面放了重定向之前的地址 |
respone.encoding | 响应编码格式 |
respone.iter_content() | 下载图片,视频,需要使用它,可以使用 chunk_size 指定字节大小 |
with open('致命诱惑3.mp4','wb')
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!