Python爬虫实战:爬取有道翻译(窗口化显示)

本文介绍如何使用Python爬虫结合tkinter模块,爬取有道翻译内容并窗口化显示。首先,分析有道翻译网页的XHR请求,找到变化的参数salt、ts和e。然后,模拟浏览器行为,通过获取这些参数构造请求,实现翻译结果的爬取。最后,展示主爬虫程序代码和窗口制作过程。

爬取有道翻译,获取翻译结果

通过python爬虫代码,结合tkinter模块,将爬虫的内容进行窗口化显示

项目最终的效果

在这里插入图片描述

本次爬虫所用到的库

import requests
import time
import random
import hashlib
import tkinter as tk

开始爬虫!!!


第一步进入:有道翻译界面:http://fanyi.youdao.com/
在这里插入图片描述

使用谷歌浏览器,右击鼠标点击检查,点击Network
输入内容点击翻译后查看XHR,这里有向服务器发送的表单内容
获取向服务器提交的表单Form,后续通过向服务器提交Form 获取翻译结果

在这里插入图片描述

多次尝试翻译不同内容,每翻译一次都会出现一个表单,表示浏览器向服务器提交过我们翻译的内容

在这里插入图片描述
结果打开每一个表单,查看下面的内容,发现有3个参数不断在变化,那么我们就需要对这3个参数进行获取后,就可以通过爬虫和浏览器一样对服务器发送表单请求,最终获取翻译结果

在这里插入图片描述

变动参数进行获取

先对salt参数进行搜索,发现以下:

在这里插入图片描述


查询到 salt 参数的来源,观察下面的salt 它来自一个叫 i的变量

这里我们还发现一个叫ts ,对!它就是前面表单里面变动的3个参数之一 lts,它来自变量r,那么我们根据它们的写法,我们通过python实现出来

在这里插入图片描述
使用python代码进行实现 get_ts这个函数 r变量模拟出来

# 获取时间戳
def get_ts():	# lts 参数
    return str(int(time.time()) * 1000)	# 它获取的就是一个时间戳

# 获取salt参数
def get_salt(ts):	# 模拟网页的写法,
    return str(int(ts) + 10 * int(random.random() * 10))
    
ts = get_ts()
salt = get_salt(ts)

目前只需要获取sign就完成了参数的收集,sigin 里面的变量 i 我们已经获取出来,那么就差获取变量e了,


在这里插入图片描述
只要找到变量e 按照它的写法可以完成拼接

通过查询找到相关文件以后,右击鼠标打开它的源码

在这里插入图片描述
在这里插入图片描述
这里获取变量e 需要进入断点模式
在这里插入图片描述

会根据网页变动,随后自动进入断点模式

在这里插入图片描述

到这里需要提交的参数就收集完毕了,附上代码
# 获取时间戳
def get_ts():
    return str(int(time.time()) * 1000)

# 获取salt参数
def get_salt(ts):
    return str(int(ts) + 10 * int(random.random() * 10))

# 获取sign参数
def get_sign(salt):
    str1 = text1.get()	# 待会我们手动输入的内容
    
    # 根据网页一样对数据进行拼接,将我们知道的参数放进去
    str_data = "fanyideskweb" + str(str1) + str(salt) + "]BjuETDhU)zqSxf-=B#7m"	
    
    m = hashlib.md5()	# 和web一样,通过md5加密
    m.update(str_data.encode('utf-8'))	
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值