python爬虫2

#隐藏,服务器会检查headers中的User-Agent来判断是爬虫还是用户,因此
#可以修改headers参数,headers是字典格式

import urllib.request
import urllib.parse  
import json

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

head={}    #新建一个字典
head['User-Agent']='Mozilla/5.0 (Windows NT 6.3; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0'#加入User-Agent值(网页上的‘消息头’有)
#也可使用add_header()方法添加

url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
data={}
data['i']=wait_trans  
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='15636742003312'
data['sign']='1c67f6ad04603cf424367d33bebe8b8c'
data['ts']='1563674200331'
data['bv']='e2a78ed30c66e16a857c5b6486a1d326'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_CLICKBUTTION'

data=urllib.parse.urlencode(data).encode('utf-8')
req=urllib.request.Request(url,data,head)#urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None) 
#head不能添加到urllib.request.urlopen中,因为urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
#参数中没有head
response=urllib.request.urlopen(req)
#对于urllib.request.urlopen可以传进一个str对象也可以传入一个Request对象
#直接传入网址,则为str对象;这里的req为Request对象

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

json_1=json.loads(html)
print(json_1["translateResult"][0][0]['tgt'])

#=延迟、代理=========#
#爬虫下载文件通常很快,服务器会识别这种非人类行为。为了解决这个问题,可以1、使用延迟提交时间。2、代理

#1、延时 缺点是太慢
import urllib.request
import urllib.parse  
import json
import time #添加时间模块,用于延时

while True: #添加循环
    wait_trans=input('请输入需要翻译的内容(输入e退出翻译程序):') #可以加入条件,方便退出程序
    if wait_trans=='e':
        print('退出程序')
        break
    
    head={}    #新建一个字典
    head['User-Agent']='Mozilla/5.0 (Windows NT 6.3; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0'#加入User-Agent值(网页上的‘消息头’有)
    #也可使用add_header()方法添加

    url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    data={}
    data['i']=wait_trans  
    data['from']='AUTO'
    data['to']='AUTO'
    data['smartresult']='dict'
    data['client']='fanyideskweb'
    data['salt']='15636742003312'
    data['sign']='1c67f6ad04603cf424367d33bebe8b8c'
    data['ts']='1563674200331'
    data['bv']='e2a78ed30c66e16a857c5b6486a1d326'
    data['doctype']='json'
    data['version']='2.1'
    data['keyfrom']='fanyi.web'
    data['action']='FY_BY_CLICKBUTTION'

    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')  

    json_1=json.loads(html)
    print(json_1["translateResult"][0][0]['tgt'])

    time.sleep(5) #延时5s
'''
输出如下:(延时5秒的循环)
请输入需要翻译的内容(输入e退出翻译程序):你好
hello
请输入需要翻译的内容(输入e退出翻译程序):我
I
请输入需要翻译的内容(输入e退出翻译程序):你
you
'''
#2、使用代理 =======
import urllib.request
url={'http://www.whatismyip.com.tw'} 
proxy_support=urllib.request.ProxyHandler({'http':'183.129.207.86:14002'}) 
opener=urllib.request.build_opener(proxy_support)#建立opener
urllib.request.install_opener(opener) #安装opener

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值