爬虫从入门到入牢

文章目录

    • 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请求常用的操作:

  1. 在浏览器的地址栏中直接给出 URL,那么就一定是 GET 请求
  2. 点击页面上的超链接也一定是 GET 请求
  3. 提交表单时,表单默认使用 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')

来源:XWenXiang
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月3日
下一篇 2022年7月3日

相关推荐