Python爬虫学习之requests库

 目录

一、requests的基本使用

二、get请求

三、post请求

四、代理的使用

五、cookie登录以及验证码图片识别


一、requests的基本使用

import requestsurl  = 'http://www.baidu.com'response = requests.get(url = url)#一个类型和六个属性
#Response类型
#print(type(response))#设置响应的编码格式
response.encoding = 'utf-8'#以字符串的形式返回网页源码
#print(response.text)#返回一个url地址
#print(response.url)#返回二进制数据
# print(response.content)#返回响应的状态码
print(response.status_code)#获取响应头
print(response.headers)

二、get请求

import requestsurl = 'http://www.baidu.com/s?'headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}data = {'wd':'北京'
}#url--请求资源地址  params--参数  kwargs--字典
response = requests.get(url=url,params=data,headers=headers)content = response.textprint(content)

注: 参数用params传递,参数不需要urlencode编码,不需要请求对象的定制。

三、post请求

import requestspost_url = 'https://fanyi.baidu.com/sug'headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}data = {'kw':'eye'
}#url--请求对象地址  data--参数  kwargs--字典
response = requests.post(url= post_url,data=data,headers=headers)content = response.text

解决乱码

import json
#注:这里是新版json,需要用encode('utf-8),不能用encoding='utf-8'
obj = json.loads(content.encode('utf-8'))
print(obj)

注:requests的post请求不需要编解码,post请求的参数是data,不需要请求对象的定制。

四、代理的使用

proxy = {'http':'101.251.204.174:8080'
}response = requests.get(url=url,params=data,headers=headers,proxies=proxy)

五、cookie登录以及验证码图片识别

e.g.自动登录古诗文网站

import requests#登录页面的url地址
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}#获取页面的源码
response = requests.get(url=url,headers=headers)
content = response.text#解析页面源码  获取__VIEWSTATE  __VIEWSTATEGENERATOR
from bs4 import BeautifulSoupsoup = BeautifulSoup(content,'lxml')#隐藏域hidden
#获取__VIEWSTATE
viewstate = soup.select('#__VIEWSTATE')[0].attrs.get('value')#获取__VIEWTATEGENERATOR
viewstategenerator = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value')#获取验证码图片
code = soup.select('#imgCode')[0].attrs.get('src')
code_url = 'https://so.gushiwen.cn'+code#requests里的session()
#通过session的返回值,使请求变成一个对象
session = requests.session()
#验证码的url的内容
response_code = session.get(code_url)
#注意此时要使用二进制数据,因为我们要使用图片的下载
content_code = response_code.content
#wb的模式就是将二进制数据写入文件
with open('code.png','wb') as fp:fp.write(content_code)#获取了验证码之后  下载到本地  然后观察验证码 观察之后 然后在控制台输入这个验证码
real_code = input('请输入验证码:')#点击登录
url_post = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'data_post = {'__VIEWSTATE':'','__VIEWSTATEGENERATOR':'','from':'http://so.gushiwen.cn/user/collect.aspx','email':'1234567@qq.com','pwd':'123456','code':'','denglu':'登录'
}response_post = session.post(url = url_post,headers=headers,data=data_post)content_post = response_post.textwith open('gushiwen.html','w',encoding='utf-8') as fp:fp.write(content_post)

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

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

相关文章

PHP之PDO_MYSQL扩展安装步骤

1,如果有php源码包可以不用下载,在 源码包下的 ext/ 下面可以找到 cd php-8.1.9/ext/pdo_mysql 2,如果存在,直接安装 /usr/local/php-8.1.9/bin/phpize ./configure --with-php-config/usr/local/php-8.1.9/bin/php-config make &&a…

代码随想录算法训练营29期Day41|LeetCode 343,96

文档讲解:整数拆分 不同的二叉搜索树 343.整数拆分 题目链接:https://leetcode.cn/problems/integer-break/description/ 思路: 题目要求我们拆分n,拆成k个数使其乘积和最大,然而题目中并没有给出k,所以…

leetcode-用队列实现栈

225. 用队列实现栈 我们先简单了解下栈与队列的区别: 操作方式:栈是一种后进先出(Last In First Out, LIFO)的数据结构,只允许在栈顶进行插入和删除操作。而队列是一种先进先出(First In First Out, FIFO)的数据结构,规定在队尾…

【Mysql】事务的隔离级别与 MVCC

事务隔离级别 我们知道 MySQL 是一个 C/S 架构的服务,对于同一个服务器来说,可以有多个客户端与之连接,每个客户端与服务器连接上之后,就是一个会话( Session )。每个客户端都可以在自己的会话中向服务器发…

【水文】求解排列组合

#include <stdio.h> // 计算阶乘 int factorial(int n) { int result 1; for (int i 1; i < n; i) { result * i; } return result; } // 计算组合数 int combination(int n, int r) { return factorial(n) / (factorial(r) * factor…

如何使用VSCode上运行Jupyter,详细案例过程出可视化图

Python作为最受AI喜欢的语言之一&#xff0c;我们与大家共同学习下如何在VS Code上运行Jupyter&#xff0c;并且用简单案例实现出图。 环境 VS Code version: 1.80.1 Python: 3.12.0 小白安装过程&#xff1a; 在准备好基础环境&#xff0c;小白心想&#xff0c;AI可是霸占科…

Loadbalancer如何优雅分担服务负荷

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Loadbalancer如何优雅分担服务负荷 前言Loadbalancer基础&#xff1a;数字世界的分配大师1. 分发请求&#xff1a;2. 健康检查&#xff1a;3. 会话保持&#xff1a;4. 可伸缩性&#xff1a;5. 负载均衡…

Linux 系统 ubuntu22.04 发行版本 固定 USB 设备端口号

前言&#xff1a; 项目中为了解决 usb 设备屏幕上电顺序导致屏幕偏移、触屏出现偏移等问题。 一、方法1&#xff1a;使用设备 ID 号 步骤&#xff1a; 查看 USB 设备的供应商ID和产品ID Bus 001 Device 003: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Te…

el-table点击某一行选中改变背景色且执行方法

elementUI table表格点击某一行选中并且改变背景色 使用:row-style"rowStyle"及row-click“selectRow”&#xff1a; 其中 selectRow 方法中&#xff1a; row 输出&#xff1a;当前行的内容 column 输出&#xff1a;当前列的信息 event 输出&#xff1a;当前事件 …

小程序支付类型接入京东支付

一、情景描述 当前项目想在微信小程序付款时添加上京东支付支付类型&#xff0c;效果如下 普通的付款方式可以直接付款就能完成支付&#xff0c;但京东支付无法在小程序上直接付款&#xff0c;他需要复制生成的链接&#xff0c;然后打开京东app然后在京东平台上付款。 所以&…

手机云控制发电机组 有网络随时随地操控监控运行

GenCloudTM 发电机组云控系统简介 Ver2.0 目录 公司简介…… …………………………… ………………………………………………1概 述…… …………………………… ………………………………………………1主要功能及特点………… …………… ………… ………………………………

Mac基于VMware安装CentOS

流程偏长&#xff0c;下一步根本点不完&#xff1b; 01 首先&#xff0c;明确下两款软件的版本信息&#xff1b; VMware是【VMware-Fusion-13.5.0】CentOS是【CentOS-7-x86_64-Minimal-1908】&#xff1b; VMware用来管理虚拟机系统&#xff0c;安装就不多说了&#xff0c;双…

【c语言】深入理解指针(2)

1. 字符指针变量 可以利用字符指针存放字符数组来间接存放字符串。 int main() {char arr[10] "abcdef";char* p arr;printf("p %s\n", p);return 0; } 那我们可不可以直接给字符指针存放字符串呢&#xff1f; int main() {char* p1 "abcde…

51单片机学习笔记 --步进电机驱动说明

文章目录 工作原理代码编写驱动方式全步进驱动半步进驱动微步进驱动 工作原理 工作原理简要说明&#xff0c;和单片机一起配合使用的步进电机多为28BYJ28 五线四相步进电机&#xff0c;配合ULN2003驱动板进行控制&#xff0c;如图所示&#xff0c;对于扭矩、精度要求较高的还有…

基于Springboot的高校心理教育辅导设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的高校心理教育辅导设计与实现(有报告)。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;…

20240202在WIN10下使用fast whisper缺少cudnn_ops_infer64_8.dll

20240202在WIN10下使用fast whisper缺少cudnn_ops_infer64_8.dll 2024/2/2 10:48 https://blog.csdn.net/feinifi/article/details/132548556 Could not locate cudnn_ops_infer64_8.dll. Please make sure it is in your library path!解决办法 安装cuDNN c:\faster-whisper-…

Libvirt 迁移标志详解

可参考&#xff1a;https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainMigrateFlags 在虚拟化环境中&#xff0c;迁移是一项重要的功能&#xff0c;Libvirt 提供了一系列标志&#xff0c;用于控制迁移过程中的不同行为。以下是 virDomainMigrateFlags 枚举的详细…

小程序中picker多列选择器

需求&#xff1a;实现类似省市联动的效果&#xff0c;选择第一列后&#xff0c;第二列数据变化 html部分: <view class"section"><view>多列选择器</view><picker mode"multiSelector" bindchange"bindMultiPickerChange"…

Unity_ShaderGraph示例项目启动

Unity_ShaderGraph示例项目启动 大前提不变:URP模板,Unity2023.1.19使用 Shader Graph - Unity 手册Shader Graph 是一个工具,能够让您直观地构建着色器。您可以在图形框架中创建并连接节点,而不必手写代码。Shader Graph 提供了能反映所作更改的即时反馈,对于不熟悉着色…

flutter抓包绕过

lutter的证书校验 起因&#xff1a; 最近工作上让做个app的复测&#xff0c;把apk发我后&#xff0c;开始尝试挂代理抓包&#xff0c;结果发现抓不到 为是证书没弄好&#xff0c;想着前几天不是刚导入了吗&#xff08;雾&#xff09;。又重新导入了下还是不行。然后各种lsp模…