先用requests库简单测试代理IP的可用性,再用selenium通过测试可用的代理IP模拟浏览器行为。以下代码提供一个思路,可作为一个学习用的测试例子。

免费代理可用性确实很低很低,非生产需求还是可以满足的。有免费代理,对学生党还是挺好的。

# -*- coding:utf-8 -*- #
import requests
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver import ChromeOptions
import randomdef testip(ip):#用requests库初步测试代理IP是否可用,单线程低效率的一个测试例子headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",\}#URLurl0='https://www.baidu.com'#设置代理proxies = {'http':ip, 'https':ip}#清理requests异常告警requests.packages.urllib3.disable_warnings()flag=0while flag<1:try:r=requests.get(url0,timeout=2,proxies=proxies,verify=False,headers=headers,stream=False)r_ok=r.status_codeif r_ok==200:return ipexcept Exception as e:print(e)flag=flag+1return ''def findiplist(driver0,wz):#在代理网页内找代理IP信息if wz=='nima':code = driver0.find_elements_by_xpath("//table/tbody/tr")print(len(code))iplist=[]if code:for i in range(len(code)):tp=code[i]tqq=tp.text.split(' ')tq=tqq[0]iplist.append(tq)ip_ok=testip(tq)if ip_ok:with open('ip_ok.txt','a')as f:f.write(ip_ok+'\n')return iplistdef readip():#读保存的代理IP信息a=[]with open('ip_ok.txt','r')as f:a=f.readlines()if a:for i in range(len(a)):a[i]=a[i].split('\n')[0]print(a)      return a
def sel_test(ip):#用selenium 通过代理IP模拟浏览器工作####用代理IP做事的一个例子option=ChromeOptions()option.add_argument(('--proxy-server=' + ip))driver = webdriver.Chrome(chrome_options=option)        #谷歌浏览器驱动调用方法driver.set_page_load_timeout(8)try:driver.get(url='https://www.baidu.com')elem=WebDriverWait(driver,10,0.5).until(EC.visibility_of_element_located((By.ID,"kw")))#driver.implicitly_wait(5)time.sleep(2)print('ip ok---',ip)except:print('Wait time out',ip)driver.quit()def seleniumwork():#用selenium 通过代理IP模拟浏览器工作driver = webdriver.Chrome()#谷歌浏览器驱动调用方法driver.set_page_load_timeout(8)driver.get(url='http://www.nimadaili.com/https/1/')time.sleep(2)with open('ip_ok.txt','w')as f:passfor i in range(1):print(i,'in one')elem=WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element_by_xpath("//li/a[text()='下一页']")))try:findiplist(driver,'nima')except:passelem.click()time.sleep(2)driver.quit()iplist=readip()for ip in iplist:try:print(ip)####用代理IP做事sel_test(ip)except:continue
if __name__=='__main__':while 1:seleniumwork()time.sleep(60*random.randint(5,20))         #隔5~20分钟运行一次seleniumwork()

关注Python开发练习,200G学习资源免费送,还可以免费处理2.5小时以内的各类小Task。

用selenium通过免费https代理IP模拟浏览器行为相关推荐

  1. Python爬虫方式抓取免费http代理IP

    我们新手在练手的时候,常常需要一些代理IP进行爬虫抓取,但是因为学习阶段,对IP质量要求不高,主要是弄懂原理,所以花钱购买爬虫代理IP就显得没必要(大款忽略),今天跟大家分享一下,如果使用爬虫抓取免费 ...

  2. Python 利用免费HTTP代理IP网站多线程筛选出自己的代理IP池

    LONG LONG TIME NO SEE 文章目录 前言 一.怎么找IP代理? 二.直接上手 先把可用的搞下来 再对它进行筛选和分析 三.代码的合并.重构和优化 总结 前言 有爬虫就会有反爬,就好像 ...

  3. python3 selenium模块Chrome设置代理ip的实现

    python3 selenium模块Chrome设置代理ip的实现 selenium模块Chrome设置代理ip的实现代码: from selenium import webdriver chrome ...

  4. selenium+python设置爬虫代理IP

    selenium+python设置爬虫代理IP 1. 背景 在使用selenium浏览器渲染技术,爬取网站信息时,一般来说,速度是很慢的.而且一般需要用到这种技术爬取的网站,反爬技术都比较厉害,对IP ...

  5. 教你创建一个免费的代理IP池(txt存储版本)

    教你创建一个免费的代理IP池(txt存储版本) 很多人可能会为爬虫被ban,IP被封等反爬机制苦恼,接下来我就教给大家如何白嫖做一个代理IP池. 准备工作 首先是准备工作,因为是第一个版本,因此我打算 ...

  6. 2019年9月-最新整理国内2000个HTTPS代理ip

    2019年9月最新国内HTTPS代理ip 171.35.163.80:9999 182.34.36.242:9999 210.22.176.146:32153 171.13.137.81:9999 2 ...

  7. selenium+python设置爬虫代理IP的方法

    1. 设置背景 在使用selenium浏览器渲染技术,当我们爬取某个网站的信息的时候,在一般情况下速度都不是特别的快.而且需要利用selenium浏览器渲染技术爬取的网站,反爬虫的应对技术都比较厉害, ...

  8. 随机选出代理ip,免费的代理ip地址

    from bs4 import BeautifulSoup import requests import random#从ip代理网站获取ip列表 def get_ip_list(url,header ...

  9. 获得代理ippython_Python学习笔记六(免费获取代理IP)

    1 importrequests2 importurllib.request3 from bs4 importBeautifulSoup4 importrandom,time,re5 importra ...

最新文章

  1. ubuntu设置securecrt串口权限
  2. Python全栈开发——描述符
  3. css搜索框变圆脸角,CSS浮动布局
  4. Linux 命令之 pgrep -- 用于检索(搜索进程/查找进程)当前正在运行的进程
  5. Android应用中去掉标题栏方法总结(Eclipse+Android Studio)
  6. hbase 根据主键查询
  7. java提示框easyui风格_[Java教程]jQuery EasyUI 提示框(Messager)用法
  8. 关于iOS 7以后自定义UIAlertview(CustomIOS7AlertView)的用法心得
  9. Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)
  10. matlab 对称矩阵特征值为负数,【原创】古典Jaccobi方法计算实对称矩阵A的特征值和向...
  11. 交换网络组建实验报告
  12. 【常用0x000000类型颜色代码表】
  13. token与refresh_token
  14. 购买邮箱需要注意什么?教你发件邮箱购买流程
  15. linux 命令行下的复制和黏贴
  16. STM32F0系列出现overrun interrupt 和PB6 PB7映射的解决办法
  17. 利用imu估计roll、pitch的理解
  18. java读Excel转List对象
  19. 【商迪3D】与您细说什么是VR虚拟电子沙盘3D数字沙盘有什么功能
  20. 诺基亚5800XM深度测

热门文章

  1. Canvas绘制圆滑曲线
  2. Genaro Network - 区块链技术如何让隐私权受益
  3. 【微信采集助手】Python Tkinter 微信公众号文章批量采集工具
  4. Spring入门第一课:Spring基础与配置Bean
  5. Web前端期末大作业-响应式室内家具网页设计(HTML+CSS+JS)实现
  6. 终于找到要辞职的原因了
  7. 微语录(2011-02-07---2011-02-13)
  8. mui的索引列表的实现
  9. Parlay/OSA-创建无线业务的一种新途径
  10. 修改grafana主题风格