一、添加浏览器
方法一:
head['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36' req = urllib.request.Request(url, data, head) response = urllib.request.urlopen(req)
只能在Request对象上加head,而urlopen(url, data, head)是错误的
方法二:
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/55.0.2883.87 Safari/537.36')
先生成req,在动态添加
二、但高频率多次访问一个网站,一样会被服务器发现
解决办法一:延迟提交时间
import time while True: word = input('请输入要翻译的英文(“q!”退出程序):') if word == 'q!': break ........ time.sleep(5)
解决办法二:使用代理
(工作原理)把需要访问的内容告诉代理,代理把它看到的所有东西发给我
但免费的ip地址可能不稳定,因此我们可以建立一个ip list,多加几个ip进去,每次随机使用一个。还可以创建一个采集ip的程序
random.choice(list)