一,动态的ua
二,动态的ip代理
目录
动态的ua
使用前先安装
pip install fake-useragent代码
""" 使用前需要安装 pip install fake-useragent """ import fake_useragent obj = fake_useragent.UserAgent() print(obj, type(obj)) for i in range(10): ua = obj.random print(ua) print(发起请求,i)ip代理池的维护
构建自己的ip代理池检察ip代理池中内容的可用性一 构建ip代理池
举例,从这个网站获取数据
写一个方法,爬取其中的数据,将其保存(文件,数据库)
爬取数据的时候,要注意去重
二 维护ip代理池,每天在第一次使用的时候,可以维护
从数据库中读取出全部的数据,依次得到每一个ip代理
使用这个ip对某一个网站进行访问,根据访问的状态码,判断代理是否可用
参考代码
url = "" proxies_list = [{"http":":9999"}] unuseful_list = []# 失效的ip代理列表 for pro in proxies_list: print(当前代理, pro) headers = {"User-Agent": obj.random} res = requests.get(url, headers=headers, proxies=pro) if res.status_code == 200: print(请求成功,这是一个可用的代理) else: print(请求失败,不可用的代理) unuseful_list.append(pro)删掉数据以后,还需再去爬,要确保ip代理池里的内容够用
比如unuseful_list 装了6个失效的ip代理
那么我们就调一个方法,去爬6个新的ip代理就可以了
# 1 测试ip代理的可用性,不可用的放在一个列表中存着 url = "" proxies_list = [{"http":":9999"}] unuseful_list = []# 失效的ip代理列表 for pro in proxies_list: print(当前代理, pro) headers = {"User-Agent": obj.random} res = requests.get(url, headers=headers, proxies=pro) if res.status_code == 200: print(请求成功,这是一个可用的代理) else: print(请求失败,不可用的代理) unuseful_list.append(pro) # 2,删除不可用的 # 批量处理,把失效的ip代理全部从源数据中删掉 # 从原始数据中,把不可用的代理删掉 for unuse in unuseful_list: if unuse in proxies_list: proxies_list.remove(unuse) # 3,ip代理的补充,前面删了多少,我要补充多少 unuse_num = len(unuseful_list) proxies_list = get_proxies_list(unuse_num) # 把新增的ip列表,添加到原数据中 proxies_list.extend(proxies_list) # 代理的维护工作就完成附加的功能
def get_one_ip(): # 获取一个ip地址 ip = {"http":":9999"} # 验证是否已存在 # res = check_if_exist(ip) res=True # 如果ip已存在,那么自己再一次调用自己 if res == True: ip = get_one_ip() return ip def get_proxies_list(num): """获得需要数量的不重复的ip""" proxies_list = list() for i in num: ip = get_one_ip() proxies_list.append(ip) return proxies_list