爬虫专栏第二篇:Requests 库实战:从基础 GET 到 POST 登录全攻略

在这里插入图片描述

简介:本文聚焦 Requests 库的强大功能与应用实战。首先介绍其安装步骤及版本选择要点,随后深入讲解 GET 请求,以百度页面为例,展示如何发起基本 GET 请求、巧妙添加 headers 与参数以精准搜索,以及正确设置 encoding 避免乱码,让您轻松获取所需页面信息。接着探讨 POST 请求,借助 http://httpbin.org/ 诠释其原理,并深度剖析百度登录页面抓包获取参数,运用字典传入数据构建 POST 请求,带您领略模拟登录背后的技术奥秘。

爬虫专栏第二篇:Requests 库实战:从基础 GET 到 POST 登录全攻略

  • 1 Requests库的使用
    • 1.1 Requests库的安装
    • 1.2 GET请求
      • 1.2.1 最基本的GET请求
      • 1.2.2 GET请求中加入headers和参数
      • 1.2.3 encoding
    • 1.3 POST请求

1 Requests库的使用

1.1 Requests库的安装

可以使用pip或者conda安装requests库,我按装的版本是2.24.0,大家可以酌情安装,不一定非要跟我安装同一个版本,差别不是很大。

1.2 GET请求

GET请求就是访问一个页面的请求。用百度页面为例:

1.2.1 最基本的GET请求

在下面这段代码中,打开了百度页面,通过status_code输出状态码是200,证明我们已经完成了一次正常的对百度页面的GET请求

import requests
URL = "http://www.baidu.com/"
response_GET = requests.get(URL)
print(response_GET.status_code)

在这里插入图片描述

1.2.2 GET请求中加入headers和参数

headers中常加入user-agent,他是为了模拟一个正常用户的身份识别标识。该如何获取呢?打开百度,打开开发者工具,点击network或者网络,刷新。点击一个包并且查看具体信息中的user-agent:
在这里插入图片描述
复制下来,并且加入到代码中去:

headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"}

在百度首页中搜索python,查看URL中的参数变化,说明wd代表着搜索:在这里插入图片描述
然后设置参数wd并且传入:

import requests
URL = "http://www.baidu.com/"
kw = {'wd':'python'
}
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"}
response_GET = requests.get(URL,headers = headers,params = kw)
print(response_GET.status_code)

该如何查看文章内容,涉及到了下一个知识点encoding

1.2.3 encoding

如果不设置encoding经常会出现乱码,该如何设置呢。在要访问的页面上右键查看网页源代码,找到如下部分:
在这里插入图片描述
这里就是爬虫访问的内容改用什么字符串编码解析。现在知道是utf-8了就可以进行设置。

import requests
URL = "http://www.baidu.com/"
kw = {'wd':'python'
}
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"}
response_GET = requests.get(URL,headers = headers,params = kw)
response_GET.encoding = 'utf-8'
print(response_GET.text)

在这里插入图片描述
可以看到已经能返回正常的中文文字了,但是发现好像跟要找的python没有关系,问题出在了:URL地址上需要加入/s ?
在这里插入图片描述

import requests
URL = "http://www.baidu.com/s?"
kw = {'wd':'python'
}
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"}
response_GET = requests.get(URL,headers = headers,params = kw)
response_GET.encoding = 'utf-8'
print(response_GET.text)

在这里插入图片描述
现在已经可以成功找到百度上跟python有关的页面了

1.3 POST请求

使用http://httpbin.org/ 的这个URL作为测试POST的案例:

import requests
URL = "http://httpbin.org/post"
data = {'wd':'python'
}
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"}
response_GET = requests.post(URL,headers = headers,data = data)
response_GET.encoding = 'utf-8'
print(response_GET.text)

在这里插入图片描述
通过这个例子说明网站的服务器已经接收到了我们的post请求。
下面打开百度登录页面,打开开发者工具,然后输入用户名和密码,可以发现抓包到post,可以通过从载荷中找到对应用户名密码的参数复制到自己的代码中进行登录:
在这里插入图片描述
但是这里属于是百度网站为了安全起见自动做了加密,你们可以换一个安全系数没这么高的小网站,他们的登录一般都可以直接抓包看到用户名和密码:
只要把post中的载荷的信息用字典的方式传入post我们可以用代码实现百度首页的登录(这只是个案例,这个代码跑不了,因为百度首页的登录信息是太多了,就这个字典我输了十分钟都没输全,你们可以换个不这么在乎用户安全的网站试试,我真的尽力了,我真想邦邦两拳给这个开发百度的程序猿,是太负责了。):

import requests
URL = "https://passport.baidu.com/v2/api/?login"
data = {'staticpage': 'https://www.baidu.com/cache/user/html/v3Jump.html','charset': 'UTF-8','token': 'ee1f6dfd3362bc566dfb86df3c61f257','tpl': 'mn','subpro': '','apiver': 'v3','tt': '1733105162149', 'safeflg': '0','u': 'https://www.baidu.com/', 'detect': '1','gid':'5C21134-1626-4E66-B2A6-8F4C41135DF4','quick_user': '0','logintype': 'dialogLogin','logLoginType': 'pc_loginDialog','loginmerge': 'true','splogin':'rate','username':'18232157902','password': 'zw963807','mem_pass': 'on','isagree': 'on','rsakey': 'HczHrxCxyc82AIEAqFp3xEvCh0pa3f1h','crypttype': '12','ppui_logintime':'850851','login_version':'v5','supportdv':'1','bdint_sync_cookie':'''05WZvQdXKh0CD3c2VGLV1a2T6rYfzw9WOjE8/FjnpXIIII9dJ11wydWL4r7oyc/d5/RS7ZR+e19vp4DEUZmj/Lhqg6bLjxo5pNHE6DKChk+SLs/V+gwTDctKSZ23g4g5PQNte67+sAXaFUgCm5s1E3HULCl/agvHny3ta1cg1RYQ4DyYPcoAlDJfOunhSfurjL22qaEcMelPwKG3901pa9lRnzuuyaKdL2i0yWNO+P0g86LYvCw/WlqcKOohCFKzpLSHwue3aMkgI+oENX4rEWw/YAB3o6fL8oFByL8UigMM1ZRNCh1ruT5HL8xKSxQQxsB69TNEl+ruXJ/tWQOTKL8oEornBZPdz+cnr4NHi1jxUT0qSP7JWeuYT11GWvRPZhp+DByX6bh8+j/0dlTYIHae4HnQdM0SdJLlDeBUXLK2Tk23CUmF4AICunU+Ci/GvbFJ1LYtcK1bUV2zeBc6ukZ5Pd/r+0VjSAfFP49VkjxtQ72HNidd9HgkHupKeY9A36CXPqJBqrYIK7S3dqjGOSazvov/n0g07pPh6aVFGoJYbKlypXQHn0yLA0Sa3MZ0M4uiMDEdLQTvoZSO/yi4eBNv3UJYu1Ao2yapzPZUkTM6JSJSor+Gwxe7BjG8zDzy4osB+s5YPEiaI8YHCc2EZvT7wQbCmXm4BrvLxR3WS84/fJB3gv2xUbk37YbNAH3EisCHhO+PDjdK7VE1YNGIQPFxJsz0cWDZM3Zb3UWrNPt6tDbbQNTFLiWlaY9JO++zSfw9LNvQxxlMYEJTf5kk12LzXkKDOP5QKcAHU/36FkrVb7isQgKhREZr8OEQE0DI7ZUAVKF2BiQsyPGPbAXNhtBLAC4dugoDH/5ug3RWyj9jKQKZVEBsBg7yEwf88QOkz+2oW2zEfoSdBX8mVQZJSQdCG3AitFVGP5inR/rBHUP1Dmmo/kesz1R2mdCRYjiXjkR631fyRbdlJgAlXKVn4ShqzXnc68j1BEU8BBX82Nqu0VU10ic+mUjGzGf+YEV9QFZow4w8uG4vnVzGuFYaC9wuSn4V5h3GMH0syWCYUguok0FR9K+jWcfaV/7me5sTnvxTXNQgZSAkm8QvQLL6I1cE/mDcTAnHY0mba9oOIpe8c2DpJ1uk30oTpQPKZypnO6oJR2knwCIz93bieZlin5jAoNgG3t0w8sSZ+G5G3HpHxmyh/eUFG4LPnMLUZbAyw1O+Mb2Qwwk5GPAZ9MKSTr8czvrvbwH8XJuYH7hmI0wm49cbRVF2C36+paV0KrSW2Or6XNtke4N4Kw5Fs8uX+SeiaP6BZifkncOA7YZtcyE='''
}
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"}
response_GET = requests.post(URL,headers = headers,data = data)
response_GET.encoding = 'utf-8'
print(response_GET.text)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猎板 PCB特殊工艺:铸就电子行业核心竞争力新高度

在当今竞争激烈且技术驱动的电子制造领域,印制电路板(PCB)作为电子产品的关键基石,其特殊工艺的发展水平直接影响着整个行业的创新步伐与产品品质。猎板 PCB 凭借在厚铜板、孔口铺铜、HDI 板、大尺寸板以及高频高速板等特殊工艺方…

基于K-NN + GCN的轴承故障诊断模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

【Gitlab】CICD使用minio作为分布式缓存

1、安装minio 下载适合自己系统版本的安装文件https://dl.min.io/server/minio/release/windows-amd64/ yum install xxx.rpm 2、配置/etc/profile export MINIO_ACCESS_KEYroot [ui登录账号] export MINIO_SECRET_KEYminioDev001 [ui登录密码] export MINIO_OPTS"…

手机卡限速丨中国移动5G变3G,网速500kb

以下猜测错误,又有新的猜测:河南移动的卡出省限速。可能是因为流量结算。 “2024年7月1日起,中国移动集团内部将开启跨省流量结算” 在深圳四五年了,之前没有过,就从上个月开始。11月底解除限速,12月刚开…

JavaScript根据数据生成柱形图

分析需求 // 定义一个数组来存储四个季度的数据 dataArray = []// 循环4次,获取用户输入的数据并存储到数组中 for i from 0 to 3// 获取用户输入的数据inputData = 获取用户输入的第(i + 1)季度的数据// 将数据存入数组dataArray[i] = inputData// 遍历数组,根据数据生成柱…

No module named ‘huggingface_hub‘

问题描述 from huggingface_hub import PyTorchModelHubMixin ModuleNotFoundError: No module named huggingface_hub解决方法 pip install huggingface_hub

Redis实现限量优惠券的秒杀

核心&#xff1a;避免超卖问题&#xff0c;保证一人一单 业务逻辑 代码步骤分析 全部代码 Service public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderService {Resourceprivate ISeckillVoucher…

Flutter:city_pickers省市区三级联动

pubspec.yaml city_pickers插件地址 自己用的GetBuilder页面模板 cupertino_icons: ^1.0.8 # 省市区城市选择 city_pickers: ^1.3.0编辑地址页面&#xff1a;controller class AddressEditController extends GetxController {AddressEditController();Future<Result?>…

ansible自动化运维(一)配置主机清单

目录 一、介绍 1.1了解自动化运维 1.2 ansible简介 1.3 ansible自动化运维的优势 1.4 ansible架构图 二、部署ansible 2.1 基本参数 2.2 Ansible帮助命令 2.3 配置主机清单 2.3.1 查看ansible的所有配置文件 2.3.2 /etc/ansible/ansible.cfg常用配置选项 2.3.3 ssh密…

视频流媒体服务解决方案之Liveweb视频汇聚平台

一&#xff0c;Liveweb视频汇聚平台简介: LiveWeb是深圳市好游科技有限公司开发的一套综合视频汇聚管理平台&#xff0c;可提供多协议&#xff08;RTSP/RTMP/GB28181/海康Ehome/大华&#xff0c;海康SDK等&#xff09;的视频设备接入&#xff0c;支持GB/T28181上下级联&#xf…

物联网——WatchDog(监听器)

看门狗简介 独立看门狗框图 看门狗原理&#xff1a;定时器溢出&#xff0c;产生系统复位信号&#xff1b;若定时‘喂狗’则不产生系统复位信号 定时中断基本结构&#xff08;对比&#xff09; IWDG键寄存器 独立看门狗超时时间 WWDG(窗口看门狗) WWDG特性 WWDG超时时间 由于…

LabVIEW将TXT文本转换为CSV格式(多行多列)

在LabVIEW中&#xff0c;将TXT格式的文本文件内容转换为Excel格式&#xff08;即CSV文件&#xff09;是一项常见的数据处理任务&#xff0c;适用于将以制表符、空格或其他分隔符分隔的数据格式化为可用于电子表格分析的形式。以下是将TXT文件转换为Excel&#xff08;CSV&#x…

我的第一个创作纪念日 —— 梦开始的地方

前言 时光荏苒&#xff0c;转眼间&#xff0c;我已经在CSDN这片技术沃土上耕耘了365天 今天&#xff0c;我迎来了自己在CSDN的第1个创作纪念日&#xff0c;这个特殊的日子不仅是对我过去努力的肯定&#xff0c;更是对未来持续创作的激励 机缘 回想起初次接触CSDN&#xff0c;那…

Android:生成Excel表格并保存到本地

提醒 本文实例是使用Kotlin进行开发演示的。 一、技术方案 org.apache.poi:poiorg.apache.poi:poi-ooxml 二、添加依赖 [versions]poi "5.2.3" log4j "2.24.2"[libraries]#https://mvnrepository.com/artifact/org.apache.poi/poi apache-poi { module…

Leecode刷题C语言之N皇后②

执行结果:通过 执行用时和内存消耗如下&#xff1a; struct hashTable {int key;UT_hash_handle hh; };struct hashTable* find(struct hashTable** hashtable, int ikey) {struct hashTable* tmp NULL;HASH_FIND_INT(*hashtable, &ikey, tmp);return tmp; }void insert(…

vue跳转以及传参

1.跳转页面的三种方法 <template><button click"twopage">跳转</button> </template><script setup> import { useRouter } from "vue-router"; const router useRouter(); // 获取 router 实例const twopage () > {r…

EasyMedia播放rtsprtmp视频流(flvhls)

学习链接 MisterZhang/EasyMedia - gitee地址 EasyMedia转码rtsp视频流flv格式&#xff0c;hls格式&#xff0c;H5页面播放flv流视频 EasyMedia播放rtsp视频流&#xff08;vue2、vue3皆可用&#xff09; EasyMedia转码rtsp视频流flv格式&#xff0c;hls格式&#xff0c;H5页…

用 React 编写一个笔记应用程序

这篇文章会教大家用 React 编写一个笔记应用程序。用户可以创建、编辑、和切换 Markdown 笔记。 1. nanoid nanoid 是一个轻量级和安全的唯一字符串ID生成器&#xff0c;常用于JavaScript环境中生成随机、唯一的字符串ID&#xff0c;如数据库主键、会话ID、文件名等场景。 …

【Linux探索学习】第十八弹——进程等待:深入解析操作系统中的进程等待机制

Linux学习笔记&#xff1a;https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 在Linux操作系统中&#xff0c;进程是资源的管理和执行单元&#xff0c;每个进程都有其自己的生命周期。在进程的执行过程中&#xff0c;进程…

大数据技术Kafka详解 ② | Kafka基础与架构介绍

目录 1、kafka的基本介绍 2、kafka的好处 3、分布式发布与订阅系统 4、kafka的主要应用场景 4.1、指标分析 4.2、日志聚合解决方法 4.3、流式处理 5、kafka架构 6、kafka主要组件 6.1、producer(生产者) 6.2、topic(主题) 6.3、partition(分区) 6.4、consumer(消费…