ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

爬虫练手

2022-08-01 01:32:21  阅读:155  来源: 互联网

标签:练手 编码 utf 爬虫 urllib results translate data


import urllib.parse
import urllib.request
import json

content = input("请输入要翻译的内容:")
url = "https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
data = {'i': content, 'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb',
        'salt': '16592445720710', 'sign': '84ffdb9715d2e19c008788f42edb0b94', 'lts': '1659244572071',
        'bv': '75aec829d151e3209d90568c50f6766c', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web',
        'action': 'FY_BY_CLICKBUTTION'}
# data['i'] = 'i am yoki'

data = urllib.parse.urlencode(data).encode('utf-8')  # 解析 URL,
# encode(编码):将unicode编码转换成其他编码的字符串,如str2.encode('utf-8'),表示将unicode编码的字符串str2转换成utf-8编码。
# response = urllib.request.urlopen(url, data)  # 发送请求得到响应
req = urllib.request.Request(url, data, head)
"""
通过Request的header参数修改
通过Request.add_header()方法修改
"""
# req = urllib.request.Request(url, data)
# req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
#                              'Chrome/103.0.5060.134 Safari/537.36 Edg/103.0.1264.77')
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
# decode(解码):将其他编码的字符串转换成unicode编码,如str1.decode('utf-8'),表示将编码的字符串str1转换成unicode编码
# 想要将其他的编码转换成utf-8必须先将其解码成unicode然后重新编码成utf-8,它是以unicode为转换媒介的。
print(html)  # {"errorCode":50}错误:
# 有道翻译做了一个反爬虫机制,就是在参数中添加了 salt 和 sign 验证

translate_results = json.loads(html)
# 找到翻译结果
translate_results = translate_results['translateResult'][0][0]['tgt']
# 打印翻译信息
print("翻译的结果是: %s" % translate_results)
head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                      'Chrome/103.0.5060.134 Safari/537.36 Edg/103.0.1264.77 '}
content = input("请输入要翻译的内容:")
url = "https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
data = {'i': content, 'from': 'AUTO', 'to': 'AUTO', 'smartresult': 'dict', 'client': 'fanyideskweb',
        'salt': '16592445720710', 'sign': '84ffdb9715d2e19c008788f42edb0b94', 'lts': '1659244572071',
        'bv': '75aec829d151e3209d90568c50f6766c', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web',
        'action': 'FY_BY_CLICKBUTTION'}
# data['i'] = 'i am yoki'

data = urllib.parse.urlencode(data).encode('utf-8')
"通过Request的header参数修改"
req = urllib.request.Request(url, data, head)
"通过Request.add_header()方法修改"
# req = urllib.request.Request(url, data)
# req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
#                              'Chrome/103.0.5060.134 Safari/537.36 Edg/103.0.1264.77')
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
print(html)  # {"errorCode":50}错误:

translate_results = json.loads(html)
# 找到翻译结果
translate_results = translate_results['translateResult'][0][0]['tgt']
# 打印翻译信息
print("翻译的结果是: %s" % translate_results)

 

标签:练手,编码,utf,爬虫,urllib,results,translate,data
来源: https://www.cnblogs.com/yuqi-yoki/p/16538780.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有