爬虫专栏第二篇: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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Leetcode】19. 删除链表的第N个节点

【Leetcode】19. 删除链表的第N个节点 1. 题目介绍2. 方法一:计算链表长度逻辑流程:代码复杂度分析 1. 题目介绍 题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,…

工业齐套管理虚拟现实仿真模拟软件

工业齐套管理虚拟现实仿真模拟软件是与法国最大的汽车制造商合作开发的一款虚拟现实仿真模拟软件,借助身临其境的虚拟现实环境,无需停止生产线,即可模拟仓库和提货区域。 工业齐套管理虚拟现实仿真模拟软件不仅适用于汽车工业,安全…

【嘟嘟早教卡】 小程序源码分享带后台管理

【嘟嘟早教卡】是专门为 3-6 岁婴幼儿童学习普通话、英语研发的早教启蒙认知识字的小程序 小程序由 Taro 及 Tailwind CSS 构建而成,后台管理使用 Laravel 及 Tailwind CSS 想法源于小时候玩的认知卡片,基本大部分家庭都买过认知卡片,我按照…

概率论相关知识随记

作为基础知识的补充,随学随记,方便以后查阅。 概率论相关知识随记 期望(Expectation)期望的定义离散型随机变量的期望示例:掷骰子的期望 连续型随机变量的期望示例:均匀分布的期望 期望的性质线性性质期望的…

FastAPI 响应状态码:管理和自定义 HTTP Status Code

FastAPI 响应状态码:管理和自定义 HTTP Status Code 本文介绍了如何在 FastAPI 中声明、使用和修改 HTTP 状态码,涵盖了常见的 HTTP 状态码分类,如信息响应(1xx)、成功状态(2xx)、客户端错误&a…

oracle 11g中如何快速设置表分区的自动增加

在很多业务系统中,一些大表一般通过分区表的形式来实现数据的分离管理,进而加快数据查询的速度。分区表运维管理的时候,由于人为操作容易忘记添加分区,导致业务数据写入报错。所以我们一般通过配置脚本或者利用oracle内置功能实现…

机器学习深入剖析逻辑回归算法

一、引言 在机器学习领域,逻辑回归(Logistic Regression)是一种极为经典且应用广泛的算法。尽管其名称带有 “回归” 二字,但实际上它主要用于解决分类问题,并且在众多领域都发挥着重要作用。接下来,让我们…

如何加强游戏安全,防止定制外挂影响游戏公平性

在现如今的游戏环境中,外挂始终是一个困扰玩家和开发者的问题。尤其是定制挂(Customized Cheats),它不仅复杂且隐蔽,更能针对性地绕过传统的反作弊系统,对游戏安全带来极大威胁。定制挂通常是根据玩家的需求…

6.824/6.5840 Lab 1: MapReduce

宁静的夏天 天空中繁星点点 心里头有些思念 思念着你的脸 ——宁夏 完整代码见: https://github.com/SnowLegend-star/6.824 由于这个lab整体难度实在不小,故考虑再三还是决定留下代码仅供参考 6.824的强度早有耳闻,我终于也是到了挑战这座高…

解决Jupyter Notebook无法转化为Pdf的问题(基于Typora非常实用)

笔者在完成各项作业和做笔记时,经常用到jupyter notebook;其因为可以同时运行python并提供格式化的数字公式的输入方式,得到了广大用户的喜爱。 当我们想要将.ipynb文件导出为pdf时,有两种常用方法。 1.Ctrlp 2.通过File ->…

[在线实验]-RabbitMQ镜像的下载与部署

镜像下载 docker的rabbitmq镜像资源-CSDN文库 加载镜像 docker load --input rabbitmq.tar 给镜像打标签 这里发现镜像名为none,需要给镜像重命名下 docker tag [镜像id] [新镜像名称]:[新镜像标签] docker tag ebaf409ffbe2 rabbitmq:management 运行镜像…

【JVM】—G1 GC日志详解

G1 GC日志详解 ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 文章目录 G1 GC日志详解1 G1 GC周期2 G1日…

ADBC 查询语法介绍:EXECUTE_QUERY

可使用 CL_SQL_STATEMENT 类的以下实例方法执行查询: EXECUTE_QUERY 该方法有一个字符串类型的强制输入参数 STATEMENT,必须向其传递语法正确的 SELECT 语句。与 DML 语句一样,SET_PARAM 方法可用于将 ABAP 数据对象绑定到占位符。 查询结…

线程信号量 Linux环境 C语言实现

既可以解决多个同类共享资源的互斥问题&#xff0c;也可以解决简易的同步问题 头文件&#xff1a;#include <semaphore.h> 类型&#xff1a;sem_t 初始化&#xff1a;int sem_init(sem_t *sem, int pshared, unsigned int value); //程序中第一次对指定信号量调用p、v操…

springboot+mybatis对接使用postgresql中PostGIS地图坐标扩展类型字段

方案一&#xff08;完全集成和自动解析&#xff09;&#xff1a; <dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId></dependency> 使用 org.postgresql.geometric包下的 PGpoint 类来接收数据库中POINT…

21个Python脚本自动执行日常任务(1)

引言 作为编程领域摸爬滚打超过十年的老手&#xff0c;我深刻体会到&#xff0c;自动化那些重复性工作能大大节省我们的时间和精力。 Python以其简洁的语法和功能强大的库支持&#xff0c;成为了编写自动化脚本的首选语言。无论你是专业的程序员&#xff0c;还是希望简化日常工…

【Python网络爬虫笔记】6- 网络爬虫中的Requests库

一、概述 Requests 是一个用 Python 语言编写的、简洁且功能强大的 HTTP 库。它允许开发者方便地发送各种 HTTP 请求&#xff0c;如 GET、POST、PUT、DELETE 等&#xff0c;并且可以轻松地处理请求的响应。这个库在 Python 生态系统中被广泛使用&#xff0c;无论是简单的网页数…

网站维护记录

服务器重启&#xff0c;网站打不开&#xff1a;chown -R manager:manager /run/php-fpm/www.sock wordpress升级需设置ftp&#xff1a; // 设置权限0777 //define("FS_METHOD", "direct"); //define("FS_CHMOD_DIR", 0777); //define("…

利用Python爬虫精准获得Amazon商品详情数据

在大数据时代&#xff0c;精准的数据获取是电商分析、市场研究和竞争情报收集的关键。Amazon作为全球最大的电商平台之一&#xff0c;其商品详情页面蕴含着丰富的信息。本文将详细介绍如何使用Python爬虫技术精准获取Amazon商品详情数据&#xff0c;并提供实用的代码示例。 1. …

AIGC开始进军网络微短剧!AI会成为影视赛道的新风口吗?

“部分AI元素微短剧更像是一系列炫丽的幻灯片堆砌&#xff0c;技术驱动下的华丽和动感&#xff0c;难以掩盖其作品在内容深度和人文关怀上的缺失&#xff0c;AI微短剧警惕沦为空洞的视觉糖衣。”日前&#xff0c;有专家一针见血地指出。 当下&#xff0c;影视行业正经历着一场…