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

这篇具有很好参考价值的文章主要介绍了4.网络爬虫—Post请求(实战演示)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

python爬虫post请求,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实战

快速找到图片链接位置

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

确认目标!!!
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

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

python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

点开链接后,里面有三条链接,到底哪一个是我们需要的,我们需要一个一个点开看
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

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

代码如下:

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下载的图片。

python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

发送post请求

百度翻译实战

python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

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

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

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

筛选 刷新 搜索

筛选:
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

刷新
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

搜索

python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

找到数据了!!!
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

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

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'])

拿到我们的数据了
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

使用session发送请求

模拟登录17k小说网

先了解本次实战目标
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能
我们的目标就是通过模拟登录然后获取账户个人主页的内容
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

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

python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能
找到数据后,我们开始写代码

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())

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

python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

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

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)

运行结果:
python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

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

常见问题

获取不到需要的数据

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

获取的数据是乱码状态

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

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

python爬虫post请求,Python网络爬虫,爬虫,python,云原生,开发语言,人工智能

🍁 🍁今日学习笔记到此结束,感谢你的阅读,如有疑问或者问题欢迎私信,我会帮忙解决,如果没有回,那我就是在教室上课,抱歉。
🍂🍂🍂🍂文章来源地址https://www.toymoban.com/news/detail-779608.html

到了这里,关于4.网络爬虫—Post请求(实战演示)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python中的POST请求参数

    在HTTP协议中,GET和POST是两种常用的请求方法。GET请求通过URL参数将请求数据传递给服务器,而POST请求则通过请求体中的参数传递数据。POST请求通常用于提交表单、上传文件等操作。POST请求参数就是请求体中的参数。 在Python中,我们可以使用第三方库如requests来发送POST请求

    2024年01月24日
    浏览(48)
  • chatgpt赋能python:Python怎么post请求

    Python作为一种高级编程语言,拥有丰富的库和模块来处理各种编程任务。其中,处理网络请求和数据交互是Python非常擅长的领域之一。在Python中,我们可以使用标准库或第三方库的HTTP模块来实现HTTP协议的请求和响应。 本篇文章将重点介绍Python中如何使用HTTP模块来实现POST请

    2024年02月08日
    浏览(52)
  • python 发送和接收post请求

    bottle是python的web框架,只需要引用一个 .py 文件即可,点击去下载页

    2024年02月15日
    浏览(37)
  • Python+Requests模拟发送post请求

    发送post请求的基础知识dumps和loads 代码示例: 以微信开放平台举例 发送post请求 查看执行结果:  上传文件 查看执行结果  封装post请求 代码示例: 封装main方法 代码示例: 封装测试类 示例代码: 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用

    2024年02月07日
    浏览(49)
  • Python - FastAPI 实现 get、post 请求

    目录 一.引言 二.FastAPI Server 构建 1.get - read_items 2.post - create_item 3.uvicorn - run_app 三.Postman 请求 1.post - create_item 2.get - read_items 四.Requests 请求 1.post - create_item 2.get - read_items 五.总结 前面介绍了 LLM 的相关知识,从样本加载、模型加载到后面的模型训练与模型推理,我们经历的完

    2024年02月05日
    浏览(41)
  • Python发送Post请求及解析响应结果

    有时候遇到请求url中有很多参数。 1.1 示例1 accounts和pwd请到http://shop-xo.hctestedu.com/注册。 执行结果: 1.2 示例2 使用不定长参数 params,将url中需要的参数单独封装。 执行结果: 用type()查看response.text的类型,是str 执行结果: 用type()查看response.json()的类型,是dict 执行结果:

    2023年04月24日
    浏览(86)
  • 【Python爬虫】requests库get和post方法使用

    requests库是一个常用于http请求的模块,性质是和urllib,urllib2是一样的,作用就是向指定目标网站的后台服务器发起请求,并接收服务器返回的响应内容。 1. 安装requests库 使用pip install requests安装 如果再使用pip安装python模块出现timeout超时异常,可使用国内豆瓣源进行安装。

    2024年02月22日
    浏览(43)
  • Python | 爬虫的request.post如何传递json参数

    例如: 这里通过json参数传递了一个字典类型的data数据,在请求头中设置Content-Type为application/json。requests会自动将json参数转化为合法的JSON格式,并且将其作为请求体提交给服务器。注意,这里的json参数是requests库中的内置参数之一,表示将请求体数据序列化为JSON格式。 在服

    2024年02月11日
    浏览(38)
  • 使用Python接口自动化测试post请求和get请求,获取请求返回值

    目录 引言 请求接口为Post时,传参方法  获取接口请求响应数据 我们在做python接口自动化测试时,接口的请求方法有get,post等;get和post请求传参,和获取接口响应数据的方法; 我们在使用python中requests库做接口测试时,在做post接口测试传参的时候,需要传入请求体,我们把

    2024年02月02日
    浏览(82)
  • (一)python发送HTTP 请求的两种方式(get和post )

    注:发送请求(包括请求行、方法类型、头、体) 常见的请求方式有get、post、put、delete            格式:requests.get() (内容: url必填; params选填:url参数字典) # ~ 无参数的get请求 # ~ 有参数的get请求 # ~ 使用params的get请求        知识扩展#  requests.post() post请求分为5种,常用

    2024年02月02日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包