鱼C论坛

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

[已解决]大神在哪里,第六集!

[复制链接]
发表于 2018-2-23 14:33:07 | 显示全部楼层 |阅读模式
20鱼币
import urllib.request
import urllib.parse
import json
import time
import random

iplist = ["180.113.46.229:8181","110.73.7.17:8123","61.135.217.7:80"]
proxy_support = urllib.request.ProxyHandler({"https":random.choice(iplist)})
opener = urllib.request.build_opener(proxy_support)
opener.addheaders = [("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")]
urllib.request.install_opener(opener)

while True:
    fayi = input("输入需要翻译内容(输入'Q'退出程序):")
    if fayi == 'Q':
        break
   
   
    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

    data = {}

    data["i"]=fayi
    data["from"]="AUTO"
    data["to"]="AUTO"
    data["smartresult"]="dict"
    data["client"]="fanyideskweb"
    data["salt"]="1519359875913"
    data["sign"]="44aa60f779d2b7a4ecfa296ee16f0187"
    data["doctype"]="json"
    data["version"]="2.1"
    data["keyfrom"]="fanyi.web"
    data["action"]="FY_BY_CLICKBUTTION"
    data["typoResult"]="false"

    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/45.0.2454.101 Safari/537.36")

    response = urllib.request.urlopen(req)

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

    target = json.loads(html)

    print("翻译的结果是:%s"%target['translateResult'][0][0]['tgt'])
    time.sleep(3)


看红色两部分  有什么区别   到底有没有执行到?
最佳答案
2018-2-23 14:33:08
不好意思。之前没有看到
  1. urllib.request.install_opener(opener)
复制代码
这一句。
这一句是安装全局opener对象,之后的HTTP访问都会使用该对象的属性。
所以你的代码也是都可以实现的,

最佳答案

查看完整内容

不好意思。之前没有看到这一句。 这一句是安装全局opener对象,之后的HTTP访问都会使用该对象的属性。 所以你的代码也是都可以实现的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-23 14:33:08 | 显示全部楼层    本楼为最佳答案   
不好意思。之前没有看到
  1. urllib.request.install_opener(opener)
复制代码
这一句。
这一句是安装全局opener对象,之后的HTTP访问都会使用该对象的属性。
所以你的代码也是都可以实现的,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-23 14:42:54 | 显示全部楼层
本帖最后由 °蓝鲤歌蓝 于 2018-2-23 14:44 编辑

红色部分并没有区别,都是添加头部信息。
第一种添加头部信息之后不能用 urllib.request.urlopen()方法来获取网页信息,需要用自身的open()方法
  1. response = opener.open(url).read()
复制代码

第二种添加头部信息可以用  urllib.request.urlopen() 方法来获取网页信息,但是没有获取代理
所以你这个程序除非把下面的注释给去掉,不然的话就相当于没有添加头部信息,或者用opener对象自己的open方法获取网页信息,这样既有代理,又添加了头部信息。
可以参考 http://bbs.fishc.com/thread-102325-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-23 15:46:02 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-23 14:42
红色部分并没有区别,都是添加头部信息。
第一种添加头部信息之后不能用 urllib.request.urlopen()方法来 ...

第一种中  这一句  urllib.request.install_opener(opener)  是安装的意思吗?  这个opener在被opener.addheaders = [("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")] 之后 就不是  opener = urllib.request.build_opener(proxy_support)  这个 opener  了  是吗?(如何解决

如果不要第一种    用下面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/45.0.2454.101 Safari/537.36")
也没用吗?   

req.add_header   不是模拟 浏览器访问吗?  

我的意思是  用代理  模拟浏览器访问  同时实现   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-23 16:15:28 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-23 14:42
红色部分并没有区别,都是添加头部信息。
第一种添加头部信息之后不能用 urllib.request.urlopen()方法来 ...

import urllib.request
import random

url = 'http://www.whatismyip.com.tw'

iplist = ['119.6.144.73:81', '183.203.208.166:8118', '111.1.32.28:81']

proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})

opener = urllib.request.build_opener(proxy_support)
opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36')]

urllib.request.install_opener(opener)

response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')

print(html)

这是甲鱼老师的例子  不是可以吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-23 17:07:56 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-2-23 16:22
不好意思。之前没有看到这一句。
这一句是安装全局opener对象,之后的HTTP访问都会使用该对象的属性。
所 ...

非常谢谢  及时的纠正,,,,差点混沌了  鱼币给你  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 18:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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