Python模擬搜狗翻譯傳送請求

2021-09-25 22:50:20 字數 3144 閱讀 6371

寫乙個小功能來模擬搜狗翻譯傳送請求,讓這個小功能擁有翻譯的功能。

首先開啟搜狗翻譯,然後f12或右鍵選擇檢查,找到network,再搜狗翻譯內進行一次翻譯,之後name下就出現一堆東西,如:

看著大概也知道,出來translatev2、sug**2和translatev2forpicset其餘都是一些,以上三個都是post請求,這裡選擇的是sug**2,它是釋義而且傳的資料也少所以選它了,至於其他兩個,到時候自己試試吧。

從這裡就可以知道了請求url位址(requset url),和所要傳輸的資料(from data)

接下來就是將所要的內容賦予我們python裡的變數:

url=

""data=

data[

"from"]=

"auto"

data[

"to"]=

"zh-chs"

data[

"client"]=

"pc"

data[

"text"

]=content

data[

"uuid"]=

"a494de6c-0c2c-4e1d-a6be-be70df3c2dfa"

data[

"pid"]=

"sogou-dict-vr"

data[

"addsugg"]=

"on"

之後就是傳送資料,但這是post請求,不是get請求,get請求直接拼接所要傳輸的資料就行了,而post請求要被編碼為位元組資料,所以我們要轉編碼。

傳送資料就是請求,和轉編碼它們需要我們在python內引用urllib模組.

請求要urllib內的request(urllib.request 用於開啟**的可擴充套件庫。)、轉編碼需要urllib內的parse(urllib.parse url解析元件)

所以在最前面引入需要的模組

import urllib.request

import urllib.parse

在data賦值完成後,將data轉碼為utf-8,這要看別人網頁的請求頭是啥了,現在一般都是utf-8。

在python中,我們通常使用urllib中的urlencode方法將字典編碼,所以:

data = urllib.parse.urlencode(data)

.encode(

'utf-8'

)

response = urllib.request.urlopen(url,data)
響應後,我們需要讀取響應,再把它轉碼為utf-8

html = response.read(

).decode(

'utf-8'

)

讀取到之後,但它是字串形式:

發現它很像是乙個字典,其實就是字典的字串格式,我們現在就需要把它從字串轉為字典,這裡需要引用乙個模組,json模組。

在**最上面的引用**後加入

import json
獲取到響應回來的內容賦值給html後,轉為字典如下:

target=json.loads(html)
輸出:

我們需要的是 鍵:data的值,它的值是乙個列表,需要第乙個也就是索引0,列表裡又是字典,需要的是 鍵:v的值

所以:

target=target[

'data'][

0]["v"

]print

("翻譯結果:%s"

% target)

完整的一些小修改後的**:

import urllib.request

import urllib.parse

import json

import time

import random

while

true

: content=

input

("請輸入需要翻譯的內容(輸入q!退出程式):"

)if content ==

'q!'

:break

url=

""data=

data[

"from"]=

"auto"

data[

"to"]=

"zh-chs"

data[

"client"]=

"pc"

data[

"text"

]=content

data[

"uuid"]=

"a494de6c-0c2c-4e1d-a6be-be70df3c2dfa"

data[

"pid"]=

"sogou-dict-vr"

data[

"addsugg"]=

"on"

data = urllib.parse.urlencode(data)

.encode(

'utf-8'

) req =urllib.request.request(url,data)

req.add_header(

"user-agent",)

response=urllib.request.urlopen(req)

html=response.read(

).decode(

'utf-8'

) target=json.loads(html)

ifnot

'data'

in target:

print

('沒有該翻譯!'

)else

: target=target[

'data'][

0]["v"

]print

("翻譯結果:%s"

% target)

time.sleep(

2)

python 自製搜狗翻譯工具

一 登陸搜狗翻譯頁面,分析請求 在裡面輸入中文翻譯 可以看出,請求的位址為 2 輸入英文翻譯 綜合上述分析,當改變裡面內容時,form data 向後台傳送的資料 中to uuid s的值在變化,其他幾個沒有變化 二 找到請求的js 從 uuid的值 a953132c 77de 4029 95df ...

利用fsockopen模擬HTTP傳送請求

首先檢查php.ini 中 allow url fopen 選項是否開啟,需要開啟 get 方式傳送請求 fp fsockopen localhost 80,errno,errstr,10 host 埠 錯誤碼 錯誤訊息 超時時間 請求行 http get http server.php?use 1...

Python基於httpx模組實現傳送請求

一 httpx模組是什麼?乙個用於http請求的模組,類似於requests aiohttp 既能傳送同步請求 是指在單程序單執行緒的 中,發起一次請求後,在收到返回結果之前,不能發ofwnrif起下一次請求 又能傳送非同步請求 是指在單程序單執行緒的 中,發起一次請求後,在等待 返回結果的時間裡,...