Python 爬取百度翻译使用requests模块发送post请求时-发生异常997

 原因:主要是sign与Cookie,每次重新输入字符串的时候就会发生变化

 解决:必须要添加对应的Cookie,才可以取到数据,否则就发生异常997

首先:使用Android的方式:

查看: 

代码:使用JSON将数据取出来

import requests
import json


# ctrl+alt+L
# 注意头部必须添加cookie,否则异常:997
headers = {
    "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Mobile Safari/537.36",
    "cookie": "BIDUPSID=A8DEAA573FFED7DD56EF166E375515B3; PSTM=1600160803; BAIDUID=A8DEAA573FFED7DD99F8C100C4C915EC:FG=1; REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_WISE_SIDS=148077_152522_152776_154615_149356_150967_152055_156816_156286_150775_154258_148867_154606_151897_153628_156623_157263_146871_154172_151016_156712_156516_127969_154175_150772_152982_155908_146732_157996_131424_154038_155530_107314_156876_156213_154189_155344_152408_158025_157790_144966_157406_154213_157814_139882_156099_155848_154146_147551_157028_157162_157697_152310_154270_155864_110085_157006; Hm_lvt_afd111fa62852d1f37001d1f980b6800=1601369898; delPer=0; PSINO=5; H_PS_PSSID=32816_32617_1423_32791_7567_7543_31253_32723_32230_7517_7605_32116_31708_22157; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1600840072,1600929110,1601365704,1601439452; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1601439452; __yjsv5_shitong=1.0_7_85fcee6d0cea49e6330c0566145bf9aaf4ba_300_1601439449138_122.235.174.76_45ffc994; yjs_js_security_passport=b1f03c61ebba307909dda538856d3d211cf06779_1601439449_js"
}
data = {
    "query": "好好学习,我学习python",
    "from": "zh",
    "to": "en",
    "token": "63cc1a0e6c0d623bbe3e11972fcbf7d9",
    "sign": "425577.171352"
}

# url
url_post = "https://fanyi.baidu.com/basetrans"

# 请求数据
response = requests.post(url_post, data=data, headers=headers)

# 输出 error=997 发生异常(有token加密和sign标记)
# print(response.content.decode())

result = json.loads(response.content.decode())
# # 显示数据
print(result["trans"][0]["dst"])

执行效果:

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Pythonrequests 库和 BeautifulSoup 库来爬取百度翻译。具体步骤如下: 1. 打开浏览器,访问百度翻译页面(https://fanyi.baidu.com/)。 2. 按下 F12 键打开开发者工具,切换到 Network 标签页,选中 XHR(XMLHttpRequest)筛选器。 3. 在输入框中输入要翻译的文本,可以看到浏览器向百度翻译发送了一个 POST 请求请求 URL 为 https://fanyi.baidu.com/v2transapi?from=en&to=zh)。 4. 点击这个请求,在右侧的 Headers 标签页中,找到请求的 Form Data,这里包含了翻译的参数(例如要翻译的文本、源语言和目标语言等)。 5. 在 Python使用 requests发送这个 POST 请求,并将参数传递进去。注意,需要添加一个 User-Agent 头部,否则百度翻译会返回 403 禁止访问的错误。 6. 解析返回的 JSON 数据,获取翻译结果。 7. 将翻译结果输出到控制台或保存到文件中。 下面是一个简单的 Python 程序,可以实现上述功能: ```python import requests from bs4 import BeautifulSoup url = 'https://fanyi.baidu.com/v2transapi' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } data = { 'from': 'en', 'to': 'zh', 'query': 'hello', 'transtype': 'translang', 'simple_means_flag': '3' } response = requests.post(url, headers=headers, data=data) soup = BeautifulSoup(response.text, 'html.parser') result = soup.select('body > p')[0].get_text() print(result) ``` 这个程序可以将英文单词 "hello" 翻译为中文 "你好"。如果要翻译其他文本,只需要修改 data 字典中的 query 参数即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值