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

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

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

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

在这里插入图片描述

POST请求

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

import requestsurl = '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 requestsurl = '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 requestsurl = '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 Sessionsession = 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 Sessionsession = 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.rhkb.cn/news/7464.html

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

相关文章

chatgpt赋能python:Python安装教程:一步步实现Python开发环境搭建

Python安装教程:一步步实现Python开发环境搭建 Python是一种高效、易读、易维护的编程语言。在人工智能、数据科学、Web开发等领域都有广泛的应用。如果你是一名初学者或Python开发者,本文将为你提供Python安装教程。 第一步:下载Python安装…

chatgpt赋能python:Python虚拟环境搭建指南

Python虚拟环境搭建指南 Python是一种广受欢迎的编程语言,它可以用于各种应用程序开发。Python语言优雅简洁,易于理解和学习。但是,当您在多台计算机上编写Python代码时,会遇到与环境设置和包依赖项相关的问题。 虚拟环境可帮助…

chatgpt赋能python:Python在线聊天:实现即时通讯的快速解决方案

Python在线聊天:实现即时通讯的快速解决方案 在当今数字时代,在线聊天已经成为人与人之间交流的主流方式。Python在线聊天应用程序提供了一种快速且可定制的解决方案,使个人用户和企业可以进行互联网通信。本文将向您介绍Python在线聊天的基…

chatgpt赋能python:Python读取聊天记录-如何轻松得到你需要的信息

Python读取聊天记录 - 如何轻松得到你需要的信息 如果你曾经需要从聊天记录中获取信息,你肯定知道这是一个非常繁琐和耗时的过程。但是,如果你会使用Python,它将会是一个轻松的过程。在本文中,我们将介绍如何使用Python读取聊天记…

chatgpt赋能Python-如何用python聊天

介绍 Python是一种广泛使用的编程语言,用于构建各种应用程序和工具。它也是一个非常有效的工具,可用于开发聊天应用程序。Python具有丰富的库和框架,这些库和框架可以帮助您轻松地构建聊天应用程序。 在本文中,我们将介绍如何使…

chatgpt赋能python:Python聊天机器人库——让你的聊天机器人变得更智能

Python聊天机器人库——让你的聊天机器人变得更智能 随着人工智能技术的快速发展,聊天机器人已经成为了现代人们生活中不可或缺的一个工具。而Python作为一门具备丰富生态的高级计算机语言,也提供了很多强大的聊天机器人库供开发者使用。在本文中&#…

chatgpt赋能python:Python微信聊天:打造高效便捷的聊天工具

Python微信聊天:打造高效便捷的聊天工具 在当今社会,微信已经成为了生活中必不可少的沟通工具之一。为了更好地享受微信带来的沟通便利,许多人开始利用Python语言开发微信聊天工具,来方便自己的工作和生活。本文将介绍Python微信…

和ChatGPT唠嗑,年入百万,还不限制学历专业

打开方式不对,再来! 图源:Anthropic 普通人也能靠ChatGPT年薪百万,享受股权和大厂福利,合法,还不限制学历专业。 最近,这个崭新的职业——Prompt Engineer(提示工程师)…

chatgpt赋能python:Python虚拟环境Windows环境搭建

Python虚拟环境 Windows环境搭建 Python作为一门广泛使用的编程语言,在开发中环境的搭建非常重要。在Windows环境下,如果同时开展多个Python项目,虚拟环境就显得尤为重要。Python虚拟环境可以使不同的项目使用不同的Python解释器、Python库和…

AI别来搅局,ChatGPT的世界不懂低代码

ChatGPT单月访问量再创新高 根据SimilarWeb统计,ChatGPT上月全球访问量17.6亿次,已超越必应、鸭鸭走DuckDuckGo等其他国际搜索引擎,并达到谷歌的2%,百度的60%。 这会,程序员失业的段子又得再来一遍了: 拖…

ChatGPT专业应用:自动生成总结

正文共 606 字,阅读大约需要 4 分钟 知识、写作必备技巧,您将在4分钟后获得以下超能力: 自动生成总结 Beezy评级 :B级 *经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 | Yolanda ●此图片…

ChatGPT实战:我用 ChatGPT 生成了一个 SpringBoot博客项目保母级教程

在本教程中,我将探讨是否可以使用 ChatGPT 编写 Spring Boot 应用。 ChatGPT 到底能不能构建 Spring Boot 应用程序? 推荐阅读:ChatGPT生成网站 探讨这个问题,我既感到兴奋又害怕,高兴的是,以后通过ChatG…

使用 ChatGPT 生成 Flask REST API:分步指南

API 开发可能是一项耗时且复杂的任务,但并非必须如此。随着自然语言处理和机器学习的进步,我们现在可以使用像 ChatGPT 这样的工具来大大简化这个过程。在这篇博文中,我们将采用循序渐进的方法使用 ChatGPT 生成 Flask REST API。我们将涵盖从…

让ChatGPT生成3D模型

OpenAI 的 ChatGPT 是一种 AI 语言模型,它允许对话输入直接转换为功能代码输出。 有很多应用,从写诗、制作食谱,甚至批判性地分析著名的文本和艺术作品。 但是,语言模型还可以理解多种编程语言和语法。 这使得仅使用文本提示即可生…

一分钟快速利用ChatGPT生成PPT

目标:让AI给我们生成一篇PPT报告 首先介绍一下什么是ChatGPT: ChatGPT是一种基于自然语言处理技术的人工智能应用。它使用OpenAI的GPT模型来自动生成自然语言的回复,可以作为虚拟助手、客服机器人等方面的应用。与其他机器学习模型不同的是&#xff0…

用chatGPT分析热门文章,我发现了流量密码 | chatGPT编程

chatGPT实战编程 01 篇,未来每周至少更新一篇,赞转评是我最大的动力呀 前言 这两天刷着掘金热门文章,真眼馋这阅读量啊~ 羡慕之余痛恨自己太垃圾,写的文章只有几百阅读量,于是打算让chatGPT帮我分析掘金热门文章&…

Postman登录注册指导

在做后端开发的小伙伴经常需要测试自己写的接口是否可以用 这时Postman就是一个很好的选择 如果您还没有下载 可以参考我的文章 API接口调试工具Postman下载安装步骤 安装好之后 我们就需要处理 它的一个注册和登录 我们点击右上角 这里就有一个创建一个账户 我们点击一下 …

Post请求报错405

今天在学习尚硅谷的javaweb课中,在进行RegistServlet类的编写时,form表单中method"post"类中重写的方法为doPost,和视频上的代码一模一样,可还是报错405,如图所示。 package com.atguigu.web;import com.at…

postman 测试接口报错401

问题:用postman看接口数据的时候报401错误,token无效(可以确定接口是正确的) 解决方法: 一:网上讲打开项目,随便找一个接口,将标头中的Authorization:后面的数据&#x…

Postman请求报405错误

错误原因:请求方式错误。 解决方案:检查一下自己postman的请求方式与编写代码是否一致。