鱼C论坛

 找回密码
 立即注册
查看: 1470|回复: 5

[已解决]请鱼C大神们帮我看一下这个爬虫的返回值中乱码的问题怎么结局

[复制链接]
发表于 2020-7-14 11:45:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import urllib.request
import urllib.parse

url = 'http://fanyi.pdf365.cn/v2/api/getTranslateResult'

context = input('请输入要翻译的内容:\n')

data = {}
data['orginL'] = 'auto'
data['targetL'] = 'zh-CN'
data ['text'] = context

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.Request(url,data)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36')

response = urllib.request.urlopen(req)

html = response.read().decode('utf-8')

print(html)
最佳答案
2020-7-14 13:00:54
马钰乔布轩 发表于 2020-7-14 12:51
那请问这个问题如何解决呢
from tkinter import *
import urllib.request
import urllib.parse
import json

class My_GUI():
    def __init__(self,top):
        self.top = top

    def set_top(self):
        #标题设置
        self.top.title('爬虫翻译_V2.0')
        self.top.geometry('600x400+10+10')
        #标签设置
        self.data_Label = Label(self.top,text='请输入需要翻译的内容:(点击对应按钮进行翻译)')
        self.data_Label.grid(row=0,column=0)
        self.text_Label = Label(self.top,text='以下为翻译结果:')
        self.text_Label.grid(row=5,column=0,rowspan=3)
        #文本框设置
        self.data_Text = Text(self.top,width=85, height=10)
        self.data_Text.grid(row=1,column=0,rowspan=4,columnspan=10)
        self.text_Text = Text(self.top,width=85, height=10)
        self.text_Text.grid(row=8,column=0,rowspan=4,columnspan=10)
        #按钮设置
        self.fy_Button = Button(self.top,text='翻译为中文',activebackground='blue',command = self.run_CN)
        self.fy_Button.grid(row=5,column=1)
        self.fy_Button = Button(self.top,text='翻译为英文',activebackground='red',command = self.run_EN)
        self.fy_Button.grid(row=5,column=2)
    #运算代码
    def run_CN(self) :
        targetL = 'zh-CN'
        self.FY(targetL)
    def run_EN(self) :
        targetL = 'en'
        self.FY(targetL)

    def FY(self,targetL):
        self.text_Text.delete(1.0,'end')
        url = 'http://fanyi.pdf365.cn/v2/api/getTranslateResult'
        head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0'}
        data = {}
        data['orginL'] = "auto"
        data['targetL'] = targetL
        data['text'] = urllib.parse.quote(self.data_Text.get('1.0','end'))

        data = urllib.parse.urlencode(data).encode('utf-8')
        req = urllib.request.Request(url=url, data=data, headers=head)
        html = urllib.request.urlopen(req)
        html = html.read().decode('utf-8')
        target = json.loads(html)
        self.text_Text.insert('end',target['result'])

def gui_start():
    top = Tk()
    Windows = My_GUI(top)
    Windows.set_top()
    top.mainloop()

gui_start()

你参考下我以前的代码吧,这代码还有好多可以优化的;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-14 11:51:38 | 显示全部楼层

hello,又是你呀
你看网站检索的时候注意下,这个网站翻译原文英文和中文时,data中的targetL取值是不一样的,所以你代码如果输入英文能正常翻译,但是为中文时回传乱码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 12:04:16 | 显示全部楼层
yhhpf 发表于 2020-7-14 11:51
hello,又是你呀
你看网站检索的时候注意下,这个网站翻译原文英文和中文时,data中的targetL ...

感谢大佬,我去试试哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 12:51:07 | 显示全部楼层
yhhpf 发表于 2020-7-14 11:51
hello,又是你呀
你看网站检索的时候注意下,这个网站翻译原文英文和中文时,data中的targetL ...

那请问这个问题如何解决呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 13:00:54 | 显示全部楼层    本楼为最佳答案   
马钰乔布轩 发表于 2020-7-14 12:51
那请问这个问题如何解决呢
from tkinter import *
import urllib.request
import urllib.parse
import json

class My_GUI():
    def __init__(self,top):
        self.top = top

    def set_top(self):
        #标题设置
        self.top.title('爬虫翻译_V2.0')
        self.top.geometry('600x400+10+10')
        #标签设置
        self.data_Label = Label(self.top,text='请输入需要翻译的内容:(点击对应按钮进行翻译)')
        self.data_Label.grid(row=0,column=0)
        self.text_Label = Label(self.top,text='以下为翻译结果:')
        self.text_Label.grid(row=5,column=0,rowspan=3)
        #文本框设置
        self.data_Text = Text(self.top,width=85, height=10)
        self.data_Text.grid(row=1,column=0,rowspan=4,columnspan=10)
        self.text_Text = Text(self.top,width=85, height=10)
        self.text_Text.grid(row=8,column=0,rowspan=4,columnspan=10)
        #按钮设置
        self.fy_Button = Button(self.top,text='翻译为中文',activebackground='blue',command = self.run_CN)
        self.fy_Button.grid(row=5,column=1)
        self.fy_Button = Button(self.top,text='翻译为英文',activebackground='red',command = self.run_EN)
        self.fy_Button.grid(row=5,column=2)
    #运算代码
    def run_CN(self) :
        targetL = 'zh-CN'
        self.FY(targetL)
    def run_EN(self) :
        targetL = 'en'
        self.FY(targetL)

    def FY(self,targetL):
        self.text_Text.delete(1.0,'end')
        url = 'http://fanyi.pdf365.cn/v2/api/getTranslateResult'
        head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0'}
        data = {}
        data['orginL'] = "auto"
        data['targetL'] = targetL
        data['text'] = urllib.parse.quote(self.data_Text.get('1.0','end'))

        data = urllib.parse.urlencode(data).encode('utf-8')
        req = urllib.request.Request(url=url, data=data, headers=head)
        html = urllib.request.urlopen(req)
        html = html.read().decode('utf-8')
        target = json.loads(html)
        self.text_Text.insert('end',target['result'])

def gui_start():
    top = Tk()
    Windows = My_GUI(top)
    Windows.set_top()
    top.mainloop()

gui_start()

你参考下我以前的代码吧,这代码还有好多可以优化的;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 21:18:13 | 显示全部楼层
yhhpf 发表于 2020-7-14 13:00
你参考下我以前的代码吧,这代码还有好多可以优化的;

卧槽!谢谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 01:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表