python爬虫实践记录-基于requests访问翻译网页爬取结果
前言
目前主流的翻译网站反爬虫都挺严格的,某度有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访问翻译网页爬取结果相关推荐
- Python爬虫自学笔记(三)动态网页爬取
现在很多网站用的是动态网页加载技术,这时候用前面的request库和BS4库就不能解决问题了,需要用新的办法. 打开网页,按F12或者右键弹出菜单里选择"检查",右侧会打开开发者工 ...
- python怎么爬取b站_【Python爬虫实例学习篇】——4、超详细爬取bilibili视频
[Python爬虫实例学习篇]--4.超详细爬取bilibili视频 由于经常在B站上学习,但无奈于家里网络太差,在线观看卡顿严重,于是萌生了下载视频的想法(如果只是单纯想下载视频,请用you-get ...
- Python爬虫新手入门教学(十):爬取彼岸4K超清壁纸
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- Python爬虫新手入门教学(十七):爬取yy全站小视频
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- python爬虫实战之图灵社区图书信息的爬取(找了久,才找到一个比较好爬取的网站)
python爬虫实战之图灵社区图书信息的爬取 程序的描述 目标 获取图灵社区(https://www.ituring.com.cn/book)中40本图书的书名 将获取的信息以列表的形式输出到屏幕上, ...
- Python爬虫新手入门教学(十三):爬取高质量超清壁纸
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- Python爬虫新手入门教学(二):爬取小说
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...
- Python爬虫初级(十三)—— 水木社区论坛爬取实战
欢迎关注公众号K的笔记阅读博主更多优质学习内容 上一篇文章:Python爬虫初级(十二)-- 新闻消息抓取实战 实战阶段一:分析首页大板块 URL 我们首先打开待爬取页面 -- 水木社区的首页:htt ...
- Python爬虫实战之一 - 基于Requests爬取拉勾网招聘信息,并保存至本地csv文件
Python爬虫实战之二 - 基于Requests抓取拉勾网招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于小白,本 ...
最新文章
- FW : 关于光棍节
- .NET分布式缓存Memcached测试体验
- LeetCode(15):三数之和
- dedeampz mysql启动不了_localhost打不开?dedeampz环境启动不了?本地php环境启动失败?...
- 大剑无锋之已知后续遍历bfegcda,中序badefcg,前序是?【面试推荐】
- Matlab代码的耗时分析、优化、加速
- C语言中auto,register,extern,static【转】
- 快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?
- android 线程安全
- [Swift]LeetCode289. 生命游戏 | Game of Life
- linux部署k8s教程
- AppFabric 使用
- phpQuery的用法
- mysql error 1236_MySQL Got fatal error 1236原因和解决方法
- iphone原彩显示对眼睛好吗_iphonex原彩显示有必要开吗
- 深入浅出—Redux-saga源码
- 弱网测试及QNET工具介绍
- Tomcat的server启动
- android hook 多线程,从零编写Android Hook Framework
- 7-38 社交网络图中结点的“重要性”计算 (30分) 最短路 迪杰斯特拉堆优化
热门文章
- 盘点:2017年我国科技创新十大里程碑事件
- 环球科技智库:2017外媒关注的中国十大科技企业
- 年终总结等汇报类PPT写法
- OpenCVSharp 基于特征的图像拼接
- ​虚幻引擎4(unreal engine 4)免费版 v2.0.1 中文版
- ESP32 开发笔记(八)ESP32 MP3 播放器
- Python大牛之路所需技术和工具
- 柔性机器人力控打磨与刚性机器人打磨的主要区别
- 安卓分屏神器_【Windows】有视频转换器、视频下载、屏幕录像、GIF制作、照片转视频、分屏工具、铃声工具等功能...
- 微信小程序实现一个手势图案锁组件