爬虫笔记-post请求百度翻译案例

day03
1、百度翻译
import urllib.request
import urllib.parse
# post请求

url = 'https://fanyi.baidu.com/sug'

headers = {
    'user-agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
}

data = {
    'kw': 'spider'
}

# post请求的参数  必须要进行编码
data = urllib.parse.urlencode(data).encode("utf-8")

# post的请求的参数  是不会拼接在url的后面的  而是需要放在请求对象的参数中
# post请求的参数  必须要进行编码
request = urllib.request.Request(url=url,data=data,headers=headers)

# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)

# 获取响应的数据
content = response.read().decode("utf8")

# 打印数据
print(response)
print(content)
print(type(content))

import json

obj = json.loads(content)
print(obj)

# post请求方式的参数  必须编码 data = urllib.parse.urlencode(data)
# 编码之后  必须调用encode方法  data = urllib.parse.urlencode(data).encode('utf-8')
# 参数是放在请求对象定制的方法中  request = urllib.request.Request(url=url,data=data,headers=headers)

2、百度翻译详细翻译

import urllib.request
import urllib.parse
url = 'https://fanyi.baidu.com/v2transapi?from=en&to=zh'

headers = {
    'Accept': '*/*',
    # 'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'zh,en-US;q=0.9,en;q=0.8,zh-CN;q=0.7',
    'Connection': 'keep-alive',
    'Content-Length': '133',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Cookie': 'BIDUPSID=AF1D3519C322AC064B988AF0CDF3866C; PSTM=1624174860; __yjs_duid=1_04608c1e65e2b5e196ff1cbb16e1d3ba1624265663531; REALTIME_TRANS_SWITCH=1; HISTORY_SWITCH=1; FANYI_WORD_SWITCH=1; SOUND_SPD_SWITCH=1; SOUND_PREFER_SWITCH=1; BDUSS=c0TklaVE1ZRHpDZDBnbmd5U203LWE4clI5fmJOanlyczVFMjUwbDg4WXpjNmhoRVFBQUFBJCQAAAAAAQAAAAEAAAD~yyEnztLSqrn9y8S8tsqo19MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPmgGEz5oBhS1; BDUSS_BFESS=c0TklaVE1ZRHpDZDBnbmd5U203LWE4clI5fmJOanlyczVFMjUwbDg4WXpjNmhoRVFBQUFBJCQAAAAAAQAAAAEAAAD~yyEnztLSqrn9y8S8tsqo19MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPmgGEz5oBhS1; MCITY=-%3A; BAIDUID=2BAE346A019DB22CE7AC220E1520E544:FG=1; APPGUIDE_10_0_2=1; BAIDUID_BFESS=2BAE346A019DB22CE7AC220E1520E544:FG=1; ariaDefaultTheme=undefined; RT="z=1&dm=baidu.com&si=e4pi5y9y5bk&ss=kyyhz0x5&sl=1&tt=18v&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ul=21xf&hd=21xz"; H_PS_PSSID=35784_35104_31254_35489_34584_35490_35542_35320_26350_35746; delPer=0; PSINO=6; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BA_HECTOR=208k2h810l84850kgj1gvce610r; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1641017836,1641102233,1641304192,1643526340; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1643526340; ab_sr=1.0.1_M2Y3YjA4ZmFhMWU1MGNmNmE1Y2YzYjQyNzM4NmRhMTIzYmRjZTkwNmJlNDdiMGExMDhiOGNiNzgzYzUzNjBmN2IwYTFmOGUyODM5MmM4YTZjY2E5OTI2N2Y3M2EzOWM3NmY2M2UyNDhiNDMxNGJiMzBlMWMyOTkwZmRkZmNjNjM=',
    'Host': 'fanyi.baidu.com',
    'Origin': 'https://fanyi.baidu.com',
    'Referer': 'https://fanyi.baidu.com/?aldtype=16047',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': 'Windows',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest',
    }

data = {
    'from': 'en',
    'to':'zh',
    'query': 'dp',
    'transtype': 'realtime',
    'simple_means_flag': '3',
    'sign': '332092.127501',
    'token': '9b83cfa8b491b42cb8b717ef1ec7c613',
    'domain': 'common'
}

# post请求的参数  必须进行编码  而且要调用encode方法
data = urllib.parse.urlencode(data).encode('utf-8')

# 请求对象的定制
request = urllib.request.Request(url=url,data=data,headers=headers)

# 模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)

# 获取响应的数据
content = response.read().decode('utf-8')

import json
obj = json.loads(content)

print(content)
print(obj)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
百度翻译API支持POST请求来进行翻译。在使用Java进行POST请求时,你可以使用Java的HttpURLConnection类来进行请求和处理响应。以下是使用Java进行百度翻译API的POST请求的步骤: 1. 首先,你需要导入java.net包中的HttpURLConnection类和java.io包中的InputStreamReader和BufferedReader类。 2. 创建一个URL对象,设置URL为百度翻译API的请求地址。 3. 使用URL对象的openConnection()方法来获得HttpURLConnection对象。 4. 设置HttpURLConnection对象的请求方式为POST,可以使用setRequestMethod()方法,并设置其他必要的请求头信息。 5. 创建一个输出流对象,将需要翻译的文本作为请求体发送给百度翻译API。你可以使用HttpURLConnection对象的getOutputStream()方法来获取输出流对象,然后使用write()方法将请求体写入输出流。 6. 发送请求并获取响应。使用HttpURLConnection对象的getResponseCode()方法获取响应状态码,如果状态码为200,则表示请求成功。然后使用getInputStream()方法获取响应的输入流。 7. 解析响应。将输入流包装成BufferedReader对象,并逐行读取响应内容。 以下是一个可以参考的Java代码示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class BaiduTranslation { public static void main(String[] args) { try { // 创建URL对象 URL url = new URL("百度翻译API的请求地址"); // 创建HttpURLConnection对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置请求方法为POST connection.setRequestMethod("POST"); // 设置其他请求头信息 // ... // 设置请求体 String text = "需要翻译的文本"; connection.setDoOutput(true); connection.getOutputStream().write(text.getBytes("UTF-8")); // 发送请求并获取响应 int responseCode = connection.getResponseCode(); if (responseCode == 200) { // 获取响应的输入流 BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); // 解析响应 // ... } else { System.out.println("请求失败,响应码:" + responseCode); } // 关闭连接 connection.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } ``` 请根据你的实际情况修改代码中的请求地址、请求头信息和需要翻译的文本。注意,这只是一个简单的示例,你可能还需要对响应进行解析和错误处理。你可以根据自己的需求进行修改和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [百度翻译api(接口)--使用post请求--java后台--只需三步](https://blog.csdn.net/j18423532754/article/details/92563505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python爬虫 urllib模块发起post请求过程解析](https://download.csdn.net/download/weixin_38606897/14872564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

少你三行代码

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值