Python爬虫03_Requests破解百度翻译

爬取百度翻译页面信息

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

python 复制代码
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 例子 用途
HTML text/html <html>... 网页结构
纯文本 text/plain Hello World 简单文本
JSON application/json {"name":"Tom"} API 数据交换
XML application/xml <user><name>Tom</name></user> 老派 API、配置文件
CSV text/csv name,age\nTom,18 表格数据
CSS/JS text/css, application/javascript .btn{color:red} 样式和脚本

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

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

3. 压缩或编码过的数据

Gzip/Deflate/Brotli:响应头 Content-Encoding: gzip,数据被压缩,需先解压。

分块传输:响应头 Transfer-Encoding: chunked,数据被分块发送,需拼接。

4. 空数据

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

如何判断类型?

看响应头里的两个关键字段:

python 复制代码
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip

Content-Type 告诉你「数据格式」。

Content-Encoding 告诉你「是否压缩」。

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

相关推荐
学习编程的gas2 分钟前
C++:STL中list的使用和模拟实现
开发语言·c++
江城开朗的豌豆18 分钟前
Vue中动态添加对象属性?这个生命周期时机选对了没?
前端·javascript·vue.js
今晚打老虎21 分钟前
c++之基础B(第一课)
开发语言·c++
wa的一声哭了21 分钟前
Python多进程并行multiprocess基础
开发语言·jvm·人工智能·python·机器学习·语言模型·自然语言处理
全宝24 分钟前
🎨【AI绘画实战】从零搭建Stable Diffusion环境,手把手教你生成超可爱Q版大头照!
人工智能·python·stable diffusion
前端小巷子25 分钟前
深入 Vue v-model
前端·vue.js·面试
Ice__Cai34 分钟前
Django 视图详解(View):处理请求与返回响应的核心
数据库·后端·python·django·pip
枫叶丹435 分钟前
【Qt开发】信号与槽(三)-> 自定义信号和槽
开发语言·qt
蔷薇のぬ42 分钟前
Python 使用pandas库实现Excel字典码表对照自动化处理
python·pandas
奔跑吧邓邓子1 小时前
从0到1学PHP(三):PHP 流程控制:掌控程序的走向
开发语言·php·流程控制