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、图片、视频,到压缩包、字体、音频流,甚至空响应。

相关推荐
A__tao1 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢1 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
xiaotao1311 小时前
第九章:Vite API 参考手册
前端·vite·前端打包
午安~婉2 小时前
Electron桌面应用聊天(续)
前端·javascript·electron
lly2024062 小时前
C 标准库 - `<stdio.h>`
开发语言
沫璃染墨2 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn9992 小时前
Laravel6.x核心特性全解析
开发语言·php·laravel
迷藏4942 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
彧翎Pro2 小时前
基于 RO1 noetic 配置 robosense Helios 32(速腾) & xsense mti 300
前端·jvm
功德+n2 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos