鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: allearn_Python

[已解决]小甲鱼爬虫课程 - 爬虫访问在线翻译

[复制链接]
回帖奖励 10 鱼币 回复本帖可获得 5 鱼币奖励! 每人限 1 次
发表于 2020-12-17 17:51:08 | 显示全部楼层
allearn_Python 发表于 2020-12-17 17:41
可能是我不够帅哈哈哈哈哈   哎,这随便哪里蹦出个小问题我就不会了
还是感谢你
import urllib.request
import urllib.parse
import json
i=0

print('输入0结束程序:')
while 1:
    
    while True:
        content=input('请输入需要翻译的内容:')
        if content=='':
            print('请重新输入:')
        else:
            break
            
    if content=='0':
        break
    if i==0:
        
        url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
        head={}
        head['User-Agent']='Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
        data={}
        data['i']=content
        data['from']='AUTO'
        data['to']='AUTO'
        data['smartresult']='dict'
        data['client']='fanyideskweb'
        data['salt']='16079142839884'
        data['sign']='7fa30595c70a9a765816fda28b64b9ac'
        data['lts']='1607914283988'
        data['bv']='4b9de992aa3d23c2999121d735e53f9c'
        data['doctype']='json'
        data['version']='2.1'
        data['keyfrom']='fanyi.web'
        data['action']='FY_BY_REALTlME'



        data=urllib.parse.urlencode(data).encode('utf-8')
        req=urllib.request.Request(url,data,head)
        response=urllib.request.urlopen(req)

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

        print('翻译结果:%s'%(target['translateResult'][0][0]["tgt"]))
        
我换了个User-Agent你再试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-17 17:53:38 | 显示全部楼层
小伤口 发表于 2020-12-17 17:51
我换了个User-Agent你再试试
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> 
============= RESTART: D:/03-其他/个人/Training Course/翻译协调标准/xin_1.py =============
输入0结束程序:
请输入需要翻译的内容:新的使用方
Traceback (most recent call last):
  File "D:/03-其他/个人/Training Course/翻译协调标准/xin_1.py", line 45, in <module>
    target=json.loads(html)
  File "C:\Users\Allen\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Allen\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Allen\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
>>> 

还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-17 17:57:40 | 显示全部楼层
小伤口 发表于 2020-12-17 17:51
我换了个User-Agent你再试试

刚开始运行时候是OK的,然后我用for循环不停循环读取excel里的英文句子去翻译(大概有1000多行),然后执行了好几分钟后就报这个错误,之后换User-agent, 换data 里面的值,重新运行你发的参考程序,都不行了,一直报这个错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-17 18:27:11 | 显示全部楼层
小伤口 发表于 2020-12-17 17:51
我换了个User-Agent你再试试

我换了个网络好了!!
然后加入了延时,顺利翻译了
import urllib.request
import urllib.parse
import json
import openpyxl
import time

#打开excel文件
wb = openpyxl.load_workbook('MD - Summary list of harmonised standards.xlsx')
ws = wb.active

url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
head={}
head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36'
data={}

data['i']= ''
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='16079142839884'
data['sign']='7fa30595c70a9a765816fda28b64b9ac'
data['lts']='1607914283988'
data['bv']='4b9de992aa3d23c2999121d735e53f9c'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_REALTlME'

#定义翻译函数
for each_row in ws.iter_rows(min_row=2,max_row=10):
    
    data['i'] = each_row[3].value
    print(data['i'])
        
    data2 = urllib.parse.urlencode(data).encode('utf-8')
    req=urllib.request.Request(url,data2, head)
    response=urllib.request.urlopen(req)

    html = response.read().decode('utf-8')
    target = json.loads(html, strict=False)

    each_row[3].value = target['translateResult'][0][0]["tgt"]
    print(each_row[3].value)

    time.sleep(8)
    
    

wb.save('翻译.xlsx')
    
    
        

上面是程序
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> 
=========== RESTART: D:\03-其他\个人\Training Course\翻译协调标准\Translate.py ===========
Safety of machinery - General principles for design - Risk assessment and risk reduction (ISO 12100:2010)
机械安全-设计一般原则的风险评估和风险降低(ISO 12100:2010)
Safety of machinery - Basic concepts, general principles for design - Part 1: Basic terminology, methodology (ISO 12100-1:2003)
机械安全——基本概念、一般原理设计-第1部分:基本术语、方法(ISO 12100 -声学)
Safety of machinery - Basic concepts, general principles for design - Part 2: Technical principles (ISO 12100-2:2003)
机械安全-基本概念,设计一般原则-第2部分:技术原理(ISO 12100 - 2:2003)
Safety of machinery - Risk assessment - Part 1: Principles (ISO 14121-1:2007)
机械安全-风险评估-第1部分:原则(ISO 14121 - 1:2007)
Safety of machinery - Minimum gaps to avoid crushing of parts of the human body
机械安全——最小间隙避免破碎的人体的部分
Safety of machinery - Human body measurements - Part 1: Principles for determining the dimensions required for openings for whole body access into machinery
机械安全-人体测量-第1部分:原则确定所需的尺寸为全身进入机械开口
Safety of machinery - Human body measurements - Part 2: Principles for determining the dimensions required for access openings
机械安全-人体测量-第2部分:原则确定访问开口所需的尺寸
Safety of machinery - Human body measurements - Part 3: Anthropometric data
机械安全-人体测量-第3部分:人体测量数据
Safety of machinery - Two-hand control devices - Functional aspects - Principles for design
机械安全-双手控制装置功能方面为设计原则
>>> 

这是执行结果。
可能是我前面访问太频繁,有道标记了我的IP吗?

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
小伤口 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

发表于 2020-12-17 18:47:57 | 显示全部楼层
allearn_Python 发表于 2020-12-17 18:27
我换了个网络好了!!
然后加入了延时,顺利翻译了

对,本来想试一试代理IP,没弄成功,既然好了,那俺就放心了,共同学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-17 18:59:36 | 显示全部楼层
小伤口 发表于 2020-12-17 18:47
对,本来想试一试代理IP,没弄成功,既然好了,那俺就放心了,共同学习

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

使用道具 举报

发表于 2020-12-21 09:34:06 | 显示全部楼层

回帖奖励 +5 鱼币

不懂帮顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-21 11:22:57 | 显示全部楼层

回帖奖励 +5 鱼币

看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-21 19:19:37 | 显示全部楼层

回帖奖励 +5 鱼币

小白看不懂啊,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-22 12:23:24 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-30 14:33:28 | 显示全部楼层

回帖奖励 +5 鱼币

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

使用道具 举报

发表于 2021-1-16 11:01:14 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-16 15:17:45 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 21:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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