Python爬虫实战:修改User-Agent

1. 前言

有些网站不喜欢被程序访问,因此他们会检查链接的来源。如果访问来源不是正常的途径,就给你“掐掉”。所以为了让我们的爬虫更好的为我们服务,需要对代码进行一些改进–隐藏-,让它看起来更像是普通人通过普通浏览器的正常点击

2. 修改User-Agent

通过查阅帮助文档,可知Request有个headers参数,通过设置这个参数,可以伪造成浏览器访问。设置这个headers参数有两种途径:
(1)实例化Request对象的时候将headers参数传进去
(2)通过add_header()方法往Request对象添加headers

  1. 实例化Request对象的时候将headers参数传进去
    这里可以借助Postman这个工具,具体可参考
    生成
    在这里插入图片描述
headers = {
    'Host': "fanyi.youdao.com",
    'Referer': "http://fanyi.youdao.com/?keyfrom=dict2.index",
    'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
    }

代码:

import urllib.request
import urllib.parse
import json
# 浏览器请求的网址
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
headers = {
    'Host': "fanyi.youdao.com",
    'Referer': "http://fanyi.youdao.com/?keyfrom=dict2.index",
    'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
    }
content=input("请输入需要翻译的内容:")
data={}
# data['i']='I love you'
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_CLICKBUTTION'
data['typoResult']='false'
# 使用urllib.parse.urlencode()转换字符串
data = urllib.parse.urlencode(data).encode('utf-8')
req=urllib.request.Request(url,data,headers)
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
target = json.loads(html)
print("翻译结果:%s"% (target['translateResult'][0][0]['tgt']))
  1. 通过add_header()方法往Request对象添加headers
req=urllib.request.Request(url,data)
req.add_header('Referer','http://fanyi.youdao.com/?keyfrom=dict2.index')
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 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']))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值