1:代理ip請求,存於redis:
# 請求ip代理連接,更新redis的代理ip def proxy_redis(): sr = redis.Redis(connection_pool=Pool) proxys_text = requests.get("你請求代理IP的地址").text #更新redis ret = sr.set('proxy_list',proxys_text) # 檢測ip代理是否有用 有用返回True,無用返回False def check_proxy(proxy_list): print("檢測的ip池是",proxy_list) try: for proxy in proxy_list: ret = requests.get("https://www.baidu.com/",proxies={"https": "http://賬號:密碼@{}".format(proxy)}).text print("IP可用") return True except Exception as e: return False # 返回請求代理池 def get_proxy_list(): while True: sr = redis.Redis(connection_pool=Pool) ip_list = sr.get("proxy_list") #redies拿到數據 proxy_list = ip_list.split("\r\n") #數據結構格式化 列表 ret = check_proxy(proxy_list) #檢測代理是否有效果 if ret == True: print("請求代理池:", proxy_list) return proxy_list break else: proxy_redis() print("redis池更新成功")
2: 設置session的N套請求頭:
# 1: session = requests.Session() # 設置一組session請求 session.proxies = { "http": "http://賬號:密碼@{}".format(proxy), "https": "http://賬號:密碼@{}".format(proxy), } headers = head() session.headers.update(headers) # 更新請求頭 請求頭自定義 session.post("https://www.amazon.com/gp/delivery/ajax/address-change.html", data) # 設置cookeis ret = session.get("https://www.amazon.com/dp/B0047CJZLM", headers=headers).text IUSC.append(session) # 1 # 2 session = requests.Session() # 設置一組session請求 session.proxies = { "http": "http://sellerbdata:lv6nv17v@{}".format(proxy), "https": "http://sellerbdata:lv6nv17v@{}".format(proxy), } headers = head() session.headers.update(headers) session.post("https://www.amazon.com/gp/delivery/ajax/address-change.html", data,) # 設置郵編 IUSC.append(session) # 2