4.网络爬虫—Post请求(实战演示)

news2025/7/7 11:25:29

网络爬虫—Post请求实战演示

    • POST请求
    • GET请求
    • POST请求和GET请求的区别
    • 获取二进制数据
      • 爬[百度官网](https://www.baidu.com/)logo实战
    • 发送post请求
      • 百度翻译实战
    • 使用session发送请求
      • 模拟登录17k小说网
    • 常见问题

前言:
📝​📝​此专栏文章是专门针对Python零基础爬虫,欢迎免费订阅!
📝​📝第一篇文章获得全站热搜第一,python领域热搜第一,欢迎阅读!
🎈🎈欢迎大家一起学习,一起成长!!
💕💕:悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

在这里插入图片描述

POST请求

Python中的POST请求是HTTP协议中的一种请求方法,用于向服务器提交数据。与GET请求不同,POST请求将数据封装在请求体中,而不是在URL中传递。通常情况下,POST请求用于向服务器提交表单数据、上传文件等操作
示例代码如下:

import requests

url = 'http://example.com/api/data'
data = {'name': 'John', 'age': 25}

response = requests.post(url, data=data)
print(response.text)

这个例子中,我们向http://example.com/api/data这个URL发送了一个POST请求,请求体中包含了nameage两个字段的数据。服务器接收到请求后,可以根据数据进行相应的处理,并返回响应结果。response.text表示服务器返回的文本内容。

GET请求

Python中的GET请求也是HTTP协议中的一种请求方法,用于向服务器请求数据。与POST请求不同,GET请求将数据以查询字符串的形式附加在URL后面,而不是封装在请求体中。通常情况下,GET请求用于向服务器请求某个资源,比如获取网页、图片、视频等
示例代码如下:

import requests

url = 'http://example.com/api/data?id=123'
response = requests.get(url)
print(response.text)

这个例子中,我们向http://example.com/api/data这个URL发送了一个GET请求,查询字符串中包含了id=123的参数。服务器接收到请求后,根据参数返回相应的数据,response.text表示服务器返回的文本内容。

POST请求和GET请求的区别

(1)post请求更安全

不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中,get请求的是静态资源,则会缓存,如果是数据,则不会缓存

(2)post请求发送的数据更大

get请求有url长度限制,http协议本身不限制,请求长度限制是由浏览器和web服务器决定和设置

(3)post请求能发送更多的数据类型

get请求只能发送ASCII字符

(4)传参方式不同

get请求参数通过url传递,post请求放在request body中传递

(5)get请求产生一个TCP数据包;post请求产生两个TCP数据包

get请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据;post请求,浏览器先发送header,服务器响应100
continue,浏览器再发送data,服务器响应200 返回数据

获取二进制数据

百度官网logo实战

快速找到图片链接位置

右键空白处 --> 检查 --> 鼠标附魔 --> 点击图片找到对应的链接
需要确认和检查图片链接是否完整

确认目标!!!
在这里插入图片描述

右键空白处 --> 检查 --> 鼠标附魔 --> 点击图片找到对应的链接

在这里插入图片描述

点开链接后,里面有三条链接,到底哪一个是我们需要的,我们需要一个一个点开看
在这里插入图片描述

接着就是敲代码,把照片获取到本地。

代码如下:

import requests

# 确认数据的链接
url = 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png'
# headers 90%情况下是不需要的,特别是图片 (当获取不到图片数据的时候才加上请求头数据)

# print(image.content)
# 获取响应对象的进制数据
data = requests.get(url)

f = open("百度logo.png", 'wb')   # 把数据保存到文件中
f.write(data.content)
f.close()

导入requests库,用于发送HTTP请求和获取响应数据。
定义一个URL变量,表示要下载的图片的链接。
使用requests.get()方法发送GET请求,获取图片的二进制数据。
打开一个文件(这里是百度logo.png),使用wb模式打开,表示以二进制写入模式打开文件。
将获取到的二进制数据写入文件中。 关闭文件。
最终,运行这段代码会在当前目录下生成一个名为百度logo.png的图片文件,内容为从指定URL下载的图片。

在这里插入图片描述

发送post请求

百度翻译实战

在这里插入图片描述

1.确认爬虫的流程(获取数据的时候,根据流程操作)

找数据(先到网页源代码里面找数据)
如果数据不在网页源代码

数据在哪里?
如何快速找到数据并确认它?
三种方法

筛选 刷新 搜索

筛选:
在这里插入图片描述

刷新
在这里插入图片描述

搜索

在这里插入图片描述

找到数据了!!!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过三种方式找到数据,接下来写代码拿出我们想要的数据

import requests

url = 'https://fanyi.baidu.com/v2transapi?from=zh&to=en'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
    'Cookie': 'BIDUPSID=12D9950A2673951B2629A85BC6A1EA8E; PSTM=1677676852; BAIDUID=12D9950A2673951B0F0D1B4587FF5EA1:FG=1; BDUSS_BFESS=JXTmpvVEtVSWxtRTVwY3dJbXA1b2h5Vk5xeVQzLTlFS25tblUyQWl3Vm9uRHBrSUFBQUFBJCQAAAAAAAAAAAEAAADA4O~RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgPE2RoDxNkdD; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; APPGUIDE_10_0_2=1; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BA_HECTOR=25202k0g2ga524210k2ha08k1i1d89t1m; ZFY=rLRjwO2KKciLyDaiAWkUkVrYFXcodJI9dLOc263KUTI:C; BAIDUID_BFESS=12D9950A2673951B0F0D1B4587FF5EA1:FG=1; BDRCVFR[bPTzwF-RsLY]=mk3SLVN4HKm; H_PS_PSSID=; PSINO=5; delPer=0; BCLID=11200678177449842076; BCLID_BFESS=11200678177449842076; BDSFRCVID=WOkOJexroG07VWbfQIXxU9c9ruweG7bTDYrEOwXPsp3LGJLVFe3JEG0Pts1-dEu-S2OOogKKQgOTHRkF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; BDSFRCVID_BFESS=WOkOJexroG07VWbfQIXxU9c9ruweG7bTDYrEOwXPsp3LGJLVFe3JEG0Pts1-dEu-S2OOogKKQgOTHRkF_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF=tRAOoC_-tDvDqTrP-trf5DCShUFsLMRWB2Q-XPoO3KtbSx3PblQzWbkAef-8bJQf5mkf3fbgy4op8P3y0bb2DUA1y4vp0tLeWeTxoUJ2-KDVeh5Gqq-KXU4ebPRiQ4b9QgbNBhQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0HPonHj_KjToL3q; H_BDCLCKID_SF_BFESS=tRAOoC_-tDvDqTrP-trf5DCShUFsLMRWB2Q-XPoO3KtbSx3PblQzWbkAef-8bJQf5mkf3fbgy4op8P3y0bb2DUA1y4vp0tLeWeTxoUJ2-KDVeh5Gqq-KXU4ebPRiQ4b9QgbNBhQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0HPonHj_KjToL3q; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1679039134,1679143234,1679204636,1679231203; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1679231203; ab_sr=1.0.1_MzRlMjk2ZGYwYzRhNzk5MGY1MjA2NDc5OWFkY2MwYjM0ZTQxOGYyYjczNWQyOTE0MWJhYTkxNmJmZWFiYTU4ZmRjZjcxZjhmZDNlZmVkYWZhMmY4MmQwYjYyYWE5M2RhYjIzMjYyNTMzNzBmYjcyMzMyNTVkMjRiMTBkZjI3MmE2YjgzNDU4YmY4Mjc5ZWRhODY1NzkxMzc5MjBiMTBhYmE0NGE0NTY2MTY5MzI2ODQ1MzQ1ZGJhYTY4YTMzOGZj',
    'Acs-Token': '1679231203273_1679231215801_TZnmUVeLuVlVCXU675lmFL7KXT+qZWTpNkvwrKj1/azwt2t9OYJni7f/HuDsQoPprquOTaEto81VaJEnjHeY/FjtVICpqxnDHWZZbIWO5NltIttKh4Bg74eYS7b86eVzcvVgkIDn9kR9V13wNYJyyapcvo2SeSLf1OWzc9Y0Byn3v/R+0hUvgWoAd0PsAxSkwy4kv4D+aDQFmy1SwM4P9tMy010GUgQspRcT3FBQ0bFWL67oAwYBkbqrJ2+I6G0i4wh67+uBxO73nn+I3M1dH4MZml16j0bU7rzdGDf2gI6HIM2vmwuAlARmYZJvPNmiaDgnaqbImC8kfXZGptQuTMp/8MK13wJULF//+k6HxoM='
}

data = {
    'from': 'zh',
    'to': 'en',
    'query': '西瓜',
    'transtype': 'translang',
    'simple_means_flag': '3',
    'sign': '550632.820697',
    'token': '89c89225cdb36e24dea4bcf09eed1996',
    'domain': 'common'
}
rest = requests.post(url, headers=headers, data=data)
trans_dict = rest.json()
print(trans_dict['trans_result']['data'][0]['dst'])
print(trans_dict['trans_result']['data'][0]['src'])

拿到我们的数据了
在这里插入图片描述

使用session发送请求

模拟登录17k小说网

先了解本次实战目标
在这里插入图片描述在这里插入图片描述
我们的目标就是通过模拟登录然后获取账户个人主页的内容
在这里插入图片描述

接下来开始找数据,账号密码,方便我们登录个人主页

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
找到数据后,我们开始写代码

import requests
from requests import Session

session = requests.Session()
url = "https://passport.17k.com/ck/user/login"

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

data = {
    'loginName': '以山河作礼',
    'password': '********'
}

# session对象登录,记录登录的状态
html = session.post(url=url, headers=headers, data=data)
print(html.json())

运行代码,看看我们是否登录成功

在这里插入图片描述

看到我们的登录昵称,说明我们登录成功了,接下来我们通过代码进入个人主页

import requests
from requests import Session

session = requests.Session()
url = "https://passport.17k.com/ck/user/login"

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

data = {
    'loginName': '以山河作礼',
    'password': '******'
}

# session对象登录,记录登录的状态
html = session.post(url=url, headers=headers, data=data)
print(html.json())

# session对象的登录的状态去请求
url_main = 'https://user.17k.com/www/'
html = session.get(url_main, headers=headers)
html.encoding = 'utf-8'
print(html.text)

运行结果:
在这里插入图片描述

我们得到了个人主页的html页面代码,在里面我们可以看到,最近阅读和最近收藏等,说明我们本次成功的获取了想要的数据。

常见问题

获取不到需要的数据

增加cookie等其他比较重要的请求头信息

获取的数据是乱码状态

写Accept-Encoding 容易乱码 请求头里面不要写

 html = requests.get(url,headers=head_data)
 html.encoding = 'utf-8' # 解决数据乱码

在这里插入图片描述

🍁 🍁今日学习笔记到此结束,感谢你的阅读,如有疑问或者问题欢迎私信,我会帮忙解决,如果没有回,那我就是在教室上课,抱歉。
🍂🍂🍂🍂

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

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

相关文章

uniapp 开发H5打包微信小程序样式失效的解决之道

使用uniapp开发H5,样式已经按照UI设计稿全部实现。但是在打包微信小程序调试的时候,遇到很多样式失效的问题。问了度娘很久,并没有完全解决样式失效的问题。于是自己按照从度娘上查到的方法去进行组合尝试,最终样式失效问题得到了…

vue项目 移动端适配——rem

做移动端的适配我们就是要考虑,对于不同大小的手机屏幕,怎么动态改变页面布局中所有盒子的宽度高度、字体大小等。 这个问题我们可以使用相对单位rem。 那么什么是 rem? rem(font size of the root element)是指相对…

VUE项目中调用高德地图

前言 相信大家或多或少都接触过在大屏的项目,在大屏项目中除了用到了echarts中的行政地图,街道地图也是很常见的,今天主要来说一下在vue中调用高德地图遇到的一些问题🤪。 申请高德key 无论我们使用任何方式调用高德地图都需要…

导航栏不变,切换局部页面的方法

前言: 在写项目的时候,一直让我很头疼的问题,就是我的项目的导航栏不需要改变,但是点击导航栏需要切换页面。接下来我总结一下我能够想到的方法! 目录: 1.iframe标签嵌入页面自定义属性 2.利用display属性和排他思想…

【Anime.js】——JavaScript动画库:Anime.js——学习笔记

目录 一、搭建开发环境 二、基本功能和使用 开始制作动画 动画属性 三、anime.stagger——交错动画 四、timeline——时间轴 五、控制、回调与助手 一、控制 二、回调 三、助手 六、easings——动画运动曲线 七、SVG动画 官网定义: anime.js 是一个简便的J…

Java二次开发海康SDK-对接门禁机

写在最前SDK版本:CH-HCNetSDKV6.1.6.45_build20210302_win64参考文档:海康SDK使用手册_V6.1对接测试设备型号:DS-K1T671M设备序列号:E50247795业务目标使用门禁设备实现对人脸的抓拍,将抓拍的人脸与其对应的数据进行上…

用Pytorch构建一个喵咪识别模型

本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 目录 一、前言 二、问题阐述及理论流程 2.1问题阐述 2.2猫咪图片识别原理 三、用PyTorch 实现 3.1PyTorch介绍 3.2PyTorch 构建模型的五要素 3.3PyTorch 实现的步骤 3.3.…

重新学习Vue,了解一下Vue的故事和核心特点

vueVue的由来Vue是什么1.响应的数据绑定2.可组合视图组件3.虚拟DOM4.MVVM模式5.声明式渲染总结Vue的由来 大家应该都知道VUE是尤大大尤雨溪开发出来的,尤大大专业不是计算机,而是室内艺术专业。后来尤大大到帕森斯设计学院进修艺术研究硕士学位&#xf…

猿创征文|【HTML】标签学习之路

&#x1f496;目录 一、HTML语法规范 1.基本语法概述 2.标签关系 二、HTML基本结构标签 1.第一个HTML页面 2.HTML基本结构标签总结 一、HTML语法规范 1.基本语法概述 html是由尖括号包围的关键词&#xff0c;列如&#xff1a;<html>。html标签通常是成对出现的&a…

前端微信小程序开发基础

文章参考&#xff08;黑马小程序教学视频&#xff09;仅供参考与学习 简介 小程序和普通页面开发的区别 运行环境不同 网页运行在浏览器中&#xff0c;小程序运行在微信环境中 API不同 由于运行环境不同&#xff0c;所以小程序中&#xff0c;无法调用DOM和BOM的API. 但是…

如何使用 CSS 使表格居中(快速指南)

在网页设计中使用表格有一段有趣的历史。在采用 CSS 之前&#xff0c;表格不仅仅用于以传统方式显示表格数据练习列表&#xff0c;而是更常用于控制完整的页面布局。 那时&#xff0c;HTML 表格用于定义网页的结构和视觉外观&#xff0c;其中表格的位置可以直接在 HTML 中指定…

input详解之文件上传

input 全部类型 常用的并且能为大多数浏览器所识别的类型大概有&#xff1a;text、password、number、button、reset、submit、hidden、radio、checkbox、file、image、color、range、date、month、week、time、datetime-local。 1、一般类型 <!-- text类型 文本框 默认…

Vue2 Element DatePicker组件设置默认日期、控制日期范围

文章目录前言一、设置默认日期1.不要用placeholder2.设置动态的默认日期二、限制日期选取1.方案2.举例总结前言 以前都是做练习, 上周拿到这个任务直接被卡住… 一、设置默认日期 1.不要用placeholder 依然不使用placeholder属性, 在v-model初始就绑定了时间的情况下, 组件可…

vue导入处理Excel表格详解

目录1. 前言2.vue导入Excel表格2.1 使用ElementUI中的upload组件2.2 使用input文件上传3. 总体代码与效果4. 总结1. 前言 最近遇到前端导入并处理excel表格的情况&#xff0c;趁此机会刚好研究一下vue导入并处理excel数据&#xff1b;当然自己手撸一个工具没有那么多时间&#…

vue3 使用tinymce编辑器实现单/多图片上传,附件上传,视频上传

安装: 我用的是tinymce最新版本v6 npm install tinymce -S npm install tinymce/tinymce-vue -S 2.安装语言包:Language Packages | Trusted Rich Text Editor | TinyMCE 3.在项目public文件夹下--新建tinymce文件夹,安装包解压在该文件夹下 封装组件TEditor.vue <templa…

微信小程序实现上拉加载下拉刷新(即粘即用)

前言 去年有出过一篇关于 vue 实现上拉加载下拉刷新的功能&#xff0c;最近微信小程序中也用到了这个功能&#xff0c;下面一起来看看微信小程序中是怎么实现这个小功能的吧。 实现效果如下&#xff1a; 实现思路&#xff1a; 1. 首先需要在使用到的 json 文件下配置 "ena…

vue项目遇见事件冒泡如何处理

开发环境 Win 10 element-ui "2.8.2" Vue 2.9.6 事件冒泡简介 如下图&#xff0c;当我们点击页面某个元素时&#xff0c;会产生点击事件&#xff0c;事件由外到内&#xff0c;逐层递进&#xff08;事件捕获阶段&#xff0c;途中的1->2->3->4&#xff09…

DVWA靶场搭建

1.靶场是什么&#xff0c;靶场的搭建 在学习web安全的过程中&#xff0c;靶场是必不可少的&#xff0c;毕竟在计算机界&#xff0c;任何理论知识都不如实操 靶场就是人为提供的带有安全漏洞的服务&#xff0c;每一个学习者都可以在本地快速搭建来实操&#xff0c;回溯漏洞的发…

超好玩的js页面效果---实现数值的动态变化

✅ 作者简介&#xff1a;一名普通本科大三的学生&#xff0c;致力于提高前端开发能力 ✨ 个人主页&#xff1a;前端小白在前进的主页 &#x1f525; 系列专栏 &#xff1a; node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 &#x1f340; 学习格言: ☀️ 打不倒你的会使你更强&a…

JS实战——轮播图

目录 一、轮播图介绍 二、原理 三、轮播图基本htm布局 四、轮播图CSS布局 五、轮播图JS布局 六、轮播图效果 一、轮播图介绍 现在我们在很多网站上都能看到轮播图&#xff0c;像某东、某宝、某猫等等大小型网站上都有应用。下面就是某宝上的轮播图样式。 二、原理 将一些图…