随机获取列表中的一个IP地址进行代理
程序员文章站
2022-03-29 12:44:56
随机获取列表中的一个IP地址进行代理,如果是json文件,需要读取文件,导入json模块进行转换后再进行处理。
with open('ip.json','r&...
随机获取列表中的一个IP地址进行代理,如果是json文件,需要读取文件,导入json模块进行转换后再进行处理。
with open('ip.json','r') as w: json.loads(f.read())
# 随机获取一个ip进行代理 from urllib import request # 导入随机模块 import random # 获取所有代理 def getProxy(): data = [ {"host": "116.31.75.100", "port": "3128"}, {"host": "218.66.253.146", "port": "8800"}, {"host": "218.66.253.144", "port": "8800"} ] proxies = [] for p in data: proxy = { 'http': 'https://' + p['host'] + ':' + p['port'], 'https': 'https://' + p['host'] + ':' + p['port'] } # 将proxy 追加到proxies列表中 proxies.append(proxy) # 返回proxies return proxies # 获取一个opener def getOpener(proxies): proxy = random.choice(proxies) proxy_handler = request.ProxyHandler(proxy) opener = request.build_opener(proxy_handler) return opener # 制作下载器 def downloader(opener, req, proxies, timeout=5, retry=2): ''' :param opener: 发请求 :param req: 请求对象 :param proxies: 代理列表 :param timeout: 超时 :param retry: 重试 :return: ''' try: response = opener.open(req,timeout=timeout) return response.read() except Exception as e: print(e) if retry > 0: opener = getOpener(proxies) # 换了一个代理 return downloader(opener,req,proxies,retry=retry-1) if __name__ == '__main__': proxies = getProxy() opener = getOpener(proxies) # 查看ip是否切换成功 base_url = 'https://www.baidu.com/s?wd=ip' res = downloader(opener,base_url,proxies) print(res.decode('utf-8'))
上一篇: windows server 2016 无法联网问题
下一篇: 欢迎来到Hadoop