初学者搜狗翻译爬虫练习

目录

一.

1.解释

2.步入

3.代码

 4.反思


一.

1.解释

当我们进入到爬虫的初学者阶段时,就想着爬点什么东西来练手,有没有什么好的指导,那么好的联系不就来了嘛。

2.步入

我们需要对网页的资源需要一定的了解,以及定位。首先我们打开搜狗翻译的网页版,打开开发者工具,首先需要做的就是

如图中,需要将发出的响应进行清空,此操作是为了让后续分析时避免响应太多造成不必要的麻烦。

然后在文本的输入框中随便输入一段信息,就可以看到浏览器就给了我们响应的数据

我们能看到传来三个响应应的数据,通过对响应内容的分析

我们需要的数据实在result的响应中,那么得到了我们想要的数据内容后,再次在文本框中进行搜索,相当于换一个搜索的内容

通过两个内容的分析,我们发现两个响应的Payload,其中有一个不一样,那么我们通过搜索进行查找不一样的内容

由于在代码中查找s是不现实的,所以通过exchange来进行查找,通过一个一个查找以后终于也是在图片中所在,发现s=D,那么就要找到D等于什么,然后继续在此页面找D等于什么

经过不限努力,也是找到了D的值表达式,那么就在此处打一个断点,慢慢来调试。

通过不断的调试,发现为什么我们在调试中的D与浏览器响应中的s值并不一样,那么我们就要想要是不是在此处加密了,然后在分析时发现,使用的时md5加密

通过上述的图片可以知道在定值的外围函数是进行加密,所以我们需要进行解密,可以看到解密后32位小写的值与浏览器响应的值相同,所以我们就没判断错。

3.代码

接下来就是进行代码的书写

import requests

url = 'https://fanyi.sogou.com/api/transpc/text/result'

headers = {
    'cookie': 'ABTEST=0|1724125030|v17; SUID=0354A20B1550A20B0000000066C40F66; wuid=1724125030603; SUV=1724125036462; SGINPUT_UPSCREEN=1724125036475; FQV=e78c577e9882a3d132080f905aceb68f; SNUID=54E91BB1BABC93CC254FEF8ABA135E1A; translate.sess=d819ef40-f1ae-4a30-b6d0-655b3c10ea9b',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0',
    'referer': 'https://fanyi.sogou.com/text?',
    'sec-ch-ua': '"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
}

先将基本的数据进行书写,然后我们按照自己的要求来,要求自己输入翻译的原文以及需要解密的代码

import requests
import hashlib

user_input = str(input("请输入你要翻译的内容:"))

# 请求网址
url = 'https://fanyi.sogou.com/api/transpc/text/result'
# 模拟浏览器
headers = {
    'cookie': 'ABTEST=0|1724125030|v17; SUID=0354A20B1550A20B0000000066C40F66; wuid=1724125030603; SUV=1724125036462; SGINPUT_UPSCREEN=1724125036475; FQV=e78c577e9882a3d132080f905aceb68f; SNUID=54E91BB1BABC93CC254FEF8ABA135E1A; translate.sess=d819ef40-f1ae-4a30-b6d0-655b3c10ea9b',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0',
    'referer': 'https://fanyi.sogou.com/text?',
    'sec-ch-ua': '"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
}

key = f"zh-CHSen{user_input}109984457"
# MD5 解密
md5_key = hashlib.md5(key.encode()).hexdigest()

# 请求参数
data = {
        "from": "zh-CHS",
        "to": "en",
        "text": user_input,
        "client": "pc",
        "fr": "browser_pc",
        "needQc": 1,
        "s": md5_key,
        "uuid": "2278a26a-6633-4ead-b58b-18d72b15b6ff",
        "exchange": False
}

# 发起 POST 请求
response = requests.post(url=url, headers=headers, data=data).json()

按照上述发送请求后,通过分析知道返回的是json数据

在利用jsonpath库中的的jsonpath方法进行获取对应的trans_sen的第一个值

import requests
import hashlib
import jsonpath

user_input = str(input("请输入你要翻译的内容:"))

# 请求网址
url = 'https://fanyi.sogou.com/api/transpc/text/result'
# 模拟浏览器
headers = {
    'cookie': 'ABTEST=0|1724125030|v17; SUID=0354A20B1550A20B0000000066C40F66; wuid=1724125030603; SUV=1724125036462; SGINPUT_UPSCREEN=1724125036475; FQV=e78c577e9882a3d132080f905aceb68f; SNUID=54E91BB1BABC93CC254FEF8ABA135E1A; translate.sess=d819ef40-f1ae-4a30-b6d0-655b3c10ea9b',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0',
    'referer': 'https://fanyi.sogou.com/text?',
    'sec-ch-ua': '"Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"'
}

key = f"zh-CHSen{user_input}109984457"
# MD5 解密
md5_key = hashlib.md5(key.encode()).hexdigest()

# 请求参数
data = {
        "from": "zh-CHS",
        "to": "en",
        "text": user_input,
        "client": "pc",
        "fr": "browser_pc",
        "needQc": 1,
        "s": md5_key,
        "uuid": "2278a26a-6633-4ead-b58b-18d72b15b6ff",
        "exchange": False
}

# 发起 POST 请求
response = requests.post(url=url, headers=headers, data=data).json()
content = jsonpath.jsonpath(response, '$..trans_sen')[0]
print(content)

 4.反思

最后就是对本次练习的反思。通过本次练习,我们学习到了一步一步分析数据的所在,为什么这样到最后的原来如此,本次练习希望大家一步一步来,没有什么一步登天

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值