Python爬虫03_Requests破解百度翻译

爬取百度翻译页面信息
以POST方法发送JSON数据,爬取响应信息,并且需要对响应信息对象类型进行区分。

import requests
import json

#1.指定url
post_url = 'https://fanyi.baidu.com/sug'

#2.进行UA封装
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:103.0) Gecko/20100101 Firefox/103.0'
}

#3.post请求参数处理(同get请求一致)
word = input('enter a word:')
data = {
    'kw':word
}

#4.请求发送
response = requests.post(url=post_url,data=data,headers=headers)

#5.获取响应数据:json()方法返回的是obj(如果确认响应数据是json类型的,才可以使用json()方法
dic_obj = response.json()

#6.持久性存储,可自行设置存储路径及文件名
fileName = word+'.json'
fp = open(fileName,'w',encoding='utf-8')
json.dump(dic_obj,fp=fp,ensure_ascii=False)

print('over!!!')

响应对象类型
服务器返回的响应数据,本质上是「一串字节流」,但按用途和格式可以分成几大类:
1. 文本类(人类可读)

类型MIME 类型(Content-Type例子用途
HTMLtext/html<html>...网页结构
纯文本text/plainHello World简单文本
JSONapplication/json{"name":"Tom"}API 数据交换
XMLapplication/xml<user><name>Tom</name></user>老派 API、配置文件
CSVtext/csvname,age\nTom,18表格数据
CSS/JStext/css, application/javascript.btn{color:red}样式和脚本

2. 二进制类(不可直接读,需解析)

类型MIME 类型例子用途
图片image/jpeg, image/png, image/webp二进制图片流展示图片
音频/视频audio/mp3, video/mp4二进制媒体流播放媒体
文件下载application/octet-streamfile.zip任意文件下载
字体文件font/woff2二进制字体网页字体
Protobufapplication/x-protobuf二进制序列化数据高效接口通信

3. 压缩或编码过的数据
Gzip/Deflate/Brotli:响应头 Content-Encoding: gzip,数据被压缩,需先解压。
分块传输:响应头 Transfer-Encoding: chunked,数据被分块发送,需拼接。

4. 空数据
状态码 204 (No Content):成功但无返回体,比如某些 DELETE 请求。

如何判断类型?
看响应头里的两个关键字段:

Content-Type: application/json; charset=utf-8
Content-Encoding: gzip

Content-Type 告诉你「数据格式」。
Content-Encoding 告诉你「是否压缩」。

响应数据可以是「任何你能用浏览器打开的东西」——从网页、JSON、图片、视频,到压缩包、字体、音频流,甚至空响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dreamsi_zh

您的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值