python-8.网络爬虫

修改headers

通过 Request 的 headers 参数修改
通过 Request.add_header() 方法修改

import urllib.request
import urllib.parse
import json

content=input('请输入需要翻译的内容:')
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/65.0.3325.146 Safari/537.36'

data={}
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='1523334803377'
data['sign']='b2c40c2c92b7029b7f53c4a272257144'
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=urllib.request.Request(url,data,head)
req.add_header('user_agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 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'])

频繁使用网络爬虫

方法1:time
方法2:代理

import urllib.request
import urllib.parse
import json
import time

while True:

    content=input('请输入需要翻译的内容(输入q!退出):')
    if content=='q!':
        break
    url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

    data={}
    data['i']=content
    data['from']='AUTO'
    data['to']='AUTO'
    data['smartresult']='dict'
    data['client']='fanyideskweb'
    data['salt']='1523334803377'
    data['sign']='b2c40c2c92b7029b7f53c4a272257144'
    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 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 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(5)#

使用代理的步骤

  1. 参数是一个字典 { ‘类型’ : ‘代理ip:端口号’ }
    proxy_support = urllib.request.ProxyHandler({})
  2. 定制、创建一个 opener
    opener = urllib.request.build_opener(proxy_support)
  3. a. 安装 opener
    urllib.request.install_opener(opener)
    b. 调用 opener
    opener.open(url)
import urllib.request

url='http://www.whatismyip.com.tw'#显示ip地址

proxy_support=urllib.request.ProxyHandler({'http':'61.160.212.181:808'})
opener = urllib.request.build_opener(proxy_support)
opener.addheaders=[('user_agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36')]


urllib.request.install_opener(opener)
response=urllib.request.urlopen(url)

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

print(html)

异常处理Exception

import urllib.error
URLError 属性:reason
HTTPError 属性:code ;reason

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值