前言

目前主流的翻译网站反爬虫都挺严格的,某度有sign算法,谷歌自带技能冷却....

查了一下发现一个反爬虫没用那么苛刻的翻译网站:译典通。

        第一次听说这个网站,界面挺老,爬来的源代码注释可以追溯到2011年,翻译的效果可以说是不尽人意Σ(っ °Д °;)っ,但是也没办

法,谁让大厂家的翻译网页反爬这么严呢

成品展示

 我的配置:

系统:win10 19042 专业版

浏览器: Edge

PythonIED : Pycharm2021

python : python3.9.6

第一步:分析网页

打开翻译网站,随便输入一个词翻译,并用f12(开发者工具)

在开发者工具中,打开顶部任务栏的网络 

点击第一个trans/,就可以看到发送请求的url地址,以及发送请求连带的数据

发送的数据:

请求的url:

包括请求标头里的Cookie和User-Agent都需要记录下来(常识了)

接着在trans\的任务栏中找到响应可以看到服务器发回的网页源代码,翻译的结果和其他需要的数据都在里面

分析完毕,总结:

1.使用requests得到返回的网页源代码

2.使用正则表达式re模块筛选有价值的数据

第二部:开始制作:

首先引入两个会用到的库

import requests     #request库
import re           #re模块

变量url储存网页的request url

使用一个字典存储User-agent 和Cookie

url = "https://www.dreye.com.cn/trans/"
head = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67","Cookie":"dreye[sys_lang]=gb; phpbb3_jb4z2_u=1; phpbb3_jb4z2_k=; phpbb3_jb4z2_sid=05e7f02ea96bb4513874e06033c06885; PHPSESSID=hgsargck54cmtepq06cb39ahm0"
}

再使用一个字典存放发送过去数据,在上面的分析可以得出

t_value是翻译的内容,from、to的意思是从一种语言翻译到另一种语言

sbt发送的是翻译,我这也不是很明白,暂且定义它为发送的操作吧

    data = {"t_value":test.get(),"from": "zh-CHS","to": "en","sbt": "翻译","t_r": ""}

发送接收数据:

#1.使用变量res接收接受并且整理出来的数据

#2.while判断res是否接受成功,网站有技能冷却,有时候需要多两三次重新发送爬取

#3.response 使用requests.post方法封装发送到请求url

#4,变量text记录response接受回的内容(响应),并使用utf-8重新编码

#5.转string格式

#6.res搜索符合正则表达式的内容,因为符合表达式的有两个内容,一个是原文,一个是翻译后的结果,原文在结果上方所以会首先记录到原文,所以下标1就是翻译结果,而下标0是原文内容

    Findresult = re.compile(r'class="transtext">(.*?)</textarea><br />')    #7res = ""        #1.while len(res) == 0:    #2response = requests.post(url, data=data, headers=head)    #3text = response.content.decode("utf-8")    #4text = str(text)        #5res = re.findall(Findresult,text)[1]        #6

等到跳出循环,既可以得出结果

此时已经完成软件的基本功能,后续使用tk模块进行窗口化等进行美化和加强即可

源代码:

在上面的基础功能上做了图形化还增加了一些功能和选择

# -*- codeing = utf-8 -*-
# @Time : 2021/8/20 16:22
# @File : translate.py
# @Software : PyCharmimport requests
import reimport tkinter as tk
from tkinter import ttk
from tkinter import *Findresult = re.compile(r'class="transtext">(.*?)</textarea><br />')
head = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67","Cookie":"dreye[sys_lang]=gb; phpbb3_jb4z2_u=1; phpbb3_jb4z2_k=; phpbb3_jb4z2_sid=05e7f02ea96bb4513874e06033c06885; PHPSESSID=hgsargck54cmtepq06cb39ahm0"
}def TransLate():url = "https://www.dreye.com.cn/trans/"d_after.insert('0.0',"")data = {"t_value":test.get(),"from": "zh-CHS","to": "en","sbt": "翻译","t_r": ""}if d_com.get() == "英译中":data['from'] = "en"data['to'] = "zh-CHS"print(data['to'])res = ""while len(res) == 0:response = requests.post(url, data=data, headers=head)text = response.content.decode("utf-8")text = str(text)res = re.findall(Findresult,text)[1]d_after.insert('0.0',res)root = tk.Tk()
root.minsize(430,200)
root.maxsize(430,200)
root.title('千度翻译')
root.attributes("-alpha",0.8)l_befor = tk.Label(root,text='翻译前',font=10,width=10)
l_befor.grid(row=0,column=0)d_com = ttk.Combobox(root,font=23,width=7)
d_com['value'] = ("中译英","英译中","待定..")
d_com.grid(row=0,column=1)
d_com.current(0)test = tk.Entry(root,font=100,width=50)
test.grid(row=1,columnspan=2)l_after = tk.Label(root,text='翻译后',font=20,width=10)
l_after.grid(row=2,column=0)d_after = tk.Text(root,width=50,height=3,font=100)
d_after.grid(row=3,columnspan=2)d_button = tk.Button(root,text='翻译',font=25,height=2,width=11,command=TransLate)
d_button.grid(row=4,column=0)def Call_C_B():if v.get()==1:root.wm_attributes('-topmost', 1)else:root.wm_attributes('-topmost', 0)v.set(0)v = IntVar()
d_selet = tk.Checkbutton(root,text="窗口置项",font=20,variable=v,command=Call_C_B)
d_selet.grid(row=4,columnspan=2)root.mainloop()

感谢观看

python爬虫实践记录-基于requests访问翻译网页爬取结果相关推荐

  1. Python爬虫自学笔记(三)动态网页爬取

    现在很多网站用的是动态网页加载技术,这时候用前面的request库和BS4库就不能解决问题了,需要用新的办法. 打开网页,按F12或者右键弹出菜单里选择"检查",右侧会打开开发者工 ...

  2. python怎么爬取b站_【Python爬虫实例学习篇】——4、超详细爬取bilibili视频

    [Python爬虫实例学习篇]--4.超详细爬取bilibili视频 由于经常在B站上学习,但无奈于家里网络太差,在线观看卡顿严重,于是萌生了下载视频的想法(如果只是单纯想下载视频,请用you-get ...

  3. Python爬虫新手入门教学(十):爬取彼岸4K超清壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  4. Python爬虫新手入门教学(十七):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  5. python爬虫实战之图灵社区图书信息的爬取(找了久,才找到一个比较好爬取的网站)

    python爬虫实战之图灵社区图书信息的爬取 程序的描述 目标 获取图灵社区(https://www.ituring.com.cn/book)中40本图书的书名 将获取的信息以列表的形式输出到屏幕上, ...

  6. Python爬虫新手入门教学(十三):爬取高质量超清壁纸

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  7. Python爬虫新手入门教学(二):爬取小说

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  8. Python爬虫初级(十三)—— 水木社区论坛爬取实战

    欢迎关注公众号K的笔记阅读博主更多优质学习内容 上一篇文章:Python爬虫初级(十二)-- 新闻消息抓取实战 实战阶段一:分析首页大板块 URL 我们首先打开待爬取页面 -- 水木社区的首页:htt ...

  9. Python爬虫实战之一 - 基于Requests爬取拉勾网招聘信息,并保存至本地csv文件

    Python爬虫实战之二 - 基于Requests抓取拉勾网招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于小白,本 ...

最新文章

  1. FW : 关于光棍节
  2. .NET分布式缓存Memcached测试体验
  3. LeetCode(15):三数之和
  4. dedeampz mysql启动不了_localhost打不开?dedeampz环境启动不了?本地php环境启动失败?...
  5. 大剑无锋之已知后续遍历bfegcda,中序badefcg,前序是?【面试推荐】
  6. Matlab代码的耗时分析、优化、加速
  7. C语言中auto,register,extern,static【转】
  8. 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
  9. android 线程安全
  10. [Swift]LeetCode289. 生命游戏 | Game of Life
  11. linux部署k8s教程
  12. AppFabric 使用
  13. phpQuery的用法
  14. mysql error 1236_MySQL Got fatal error 1236原因和解决方法
  15. iphone原彩显示对眼睛好吗_iphonex原彩显示有必要开吗
  16. 深入浅出—Redux-saga源码
  17. 弱网测试及QNET工具介绍
  18. Tomcat的server启动
  19. android hook 多线程,从零编写Android Hook Framework
  20. 7-38 社交网络图中结点的“重要性”计算 (30分) 最短路 迪杰斯特拉堆优化

热门文章

  1. 盘点:2017年我国科技创新十大里程碑事件
  2. 环球科技智库:2017外媒关注的中国十大科技企业
  3. 年终总结等汇报类PPT写法
  4. OpenCVSharp 基于特征的图像拼接
  5. ​虚幻引擎4(unreal engine 4)免费版 v2.0.1 中文版
  6. ESP32 开发笔记(八)ESP32 MP3 播放器
  7. Python大牛之路所需技术和工具
  8. 柔性机器人力控打磨与刚性机器人打磨的主要区别
  9. 安卓分屏神器_【Windows】有视频转换器、视频下载、屏幕录像、GIF制作、照片转视频、分屏工具、铃声工具等功能...
  10. 微信小程序实现一个手势图案锁组件