urllib简单翻译和代理ip

 入门写翻译来熟悉urllib。

翻译:

import urllib.request as urlreq
import urllib.parse as urlparse
import json

content = input('请输入要翻译的内容: ')

#有道翻译
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data = {
    'i' : content,
    'from' : 'zh-CHS',
    'to' : 'ja',
    'smartresult' : 'dict',
    'client' : 'fanyideskweb',
    'salt' : '15554271260136',
    'sign' : '947fbcd3d621ed6a5280762e2b8541d3',
    'doctype' : 'json',
    'version' : '2.1',
    'keyfrom' : 'fanyi.web',
    'action' : 'FY_BY_CLICKBUTTION'
}

#添加响应头来隐藏自己
head = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0'    
}

data = urlparse.urlencode(data).encode('UTF-8')#dict->str->bytes
req = urlreq.Request(url, data, headers = head)
#req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0')

response = urlreq.urlopen(req)
html = response.read().decode('utf-8')#html为bytes,为json结构: bytes->str
target = json.loads(html)#反序列化得到字典: str->dict

print(target['translateResult'][0][0]['tgt'])


#金山翻译
'''
url = 'http://fy.iciba.com/ajax.php?a=fy'
data = {
    'f' : 'auto',
    't' : 'de',
    'w' : content
}

data = urlparse.urlencode(data).encode('UTF-8')
response = urlreq.urlopen(url, data)
html = response.read().decode('utf-8')
target = json.loads(html)
print(target['content']['out'])
'''


#百度翻译
'''
#zh : 中文,en : 英文,de : 德语,jp : 日语
url = 'https://fanyi.baidu.com/transapi'
data = {
    'from' : 'zh',
    'to' : 'de',
    'query' : content,
    }

data = urlparse.urlencode(data).encode('UTF-8')
response = urlreq.urlopen(url, data)
html = response.read().decode('utf-8')
target = json.loads(html)
print(target['data'][0]['dst'])
'''

代理ip:

先说一下OpenerDirector类:

http://www.iteedu.com/plang/python/urllib2/opener.php  (取上)

当你获取一个URL时,你使用一个opener(OpenerDirector)。正常情况下我们一直使用默认的opener,通过urlopen,但你也可以创建自定义的openers。

OpenerDirector操作类是一个管理很多处理类(Handler)的类。而所有这些 Handler 类都对应处理相应的协议,或者特殊功能。

分别有下面的处理类:BaseHandler,HTTPErrorProcessor,HTTPDefaultErrorHandler,HTTPRedirectHandler,ProxyHandler
AbstractBasicAuthHandler,HTTPBasicAuthHandler,ProxyBasicAuthHandler,AbstractDigestAuthHandler,
ProxyDigestAuthHandler,AbstractHTTPHandler,HTTPHandler,HTTPCookieProcessor,UnknownHandler,
FileHandler,FTPHandler,CacheFTPHandler

urllib.request.ProxyHandler(proxies=None)

标准库解释:

导致请求通过一个代理。如果代理是给定的,它必须是一个字典的代理协议名称映射到url。默认值是从环境变量的列表 _proxy中读取代理。如果没有代理设置环境变量,那么在Windows环境中代理设置了从注册表部分的网络设置,在Mac OS X环境代理信息检索的OS X系统配置框架。

禁用一个代理传递一个空的字典。

你可以用build_opener,这是一个很方便的创建opener对象的函数,它只有一个函数调用。

标准库解释:

urllib.request.build_opener([handler, …])

返回一个顺序的链的处理程序 OpenerDirector的实例。处理程序可以是BaseHandler的实例,或者 BaseHandler的子类(在这种情况下,必须调用没有参数的构造函数)。下面这些类的实例将提前处理程序,除非处理程序包含它们,或者它们子类的实例:ProxyHandler(如果检测到代理设置), UnknownHandler, HTTPHandler, HTTPDefaultErrorHandler, HTTPRedirectHandler, FTPHandler, FileHandler, HTTPErrorProcessor.

如果Python安装SSL支持(即如果 ssl模块可以被导入), HTTPSHandler也将被添加。

一个 BaseHandler子类也可以通过改变它的 handler_order属性来修改它再处理程序列表中的位置。

install_opener能设置一个全局opener对象,这意味着调用urlopen将会都用你刚安装的opener。

标准库解释:

urllib.request.install_opener(opener)

安装一个 OpenerDirector实例作为全球默认的opener 。安装一个opener 必要的,如果你想让urlopen使用这个opener ;否则,简单地调用 OpenerDirector.open()而不是 urlopen()。这样代码不会检查一个真实的 OpenerDirector并且任何类的适当的接口都可以运作。

opener对象有一个open方法,它可以以一种和urlopen函数同样的方式直接调用来获取url:除非是为了方便,没有必要调用install_opener。

代码:

import urllib.request as urlreq

url = 'https://www.baidu.com'

proxy_support = urlreq.ProxyHandler({'http':'60.217.64.237:63141'})
#定制、创建一个opener
opener = urlreq.build_opener(proxy_support)
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0')]
#安装opener,意味着调用urlopen将会都是用自己定制的opener
urlreq.install_opener(opener)

response = urlreq.urlopen(url)
html = response.read()

print(html)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值