用selenium通过免费https代理IP模拟浏览器行为
先用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模拟浏览器行为相关推荐
- Python爬虫方式抓取免费http代理IP
我们新手在练手的时候,常常需要一些代理IP进行爬虫抓取,但是因为学习阶段,对IP质量要求不高,主要是弄懂原理,所以花钱购买爬虫代理IP就显得没必要(大款忽略),今天跟大家分享一下,如果使用爬虫抓取免费 ...
- Python 利用免费HTTP代理IP网站多线程筛选出自己的代理IP池
LONG LONG TIME NO SEE 文章目录 前言 一.怎么找IP代理? 二.直接上手 先把可用的搞下来 再对它进行筛选和分析 三.代码的合并.重构和优化 总结 前言 有爬虫就会有反爬,就好像 ...
- python3 selenium模块Chrome设置代理ip的实现
python3 selenium模块Chrome设置代理ip的实现 selenium模块Chrome设置代理ip的实现代码: from selenium import webdriver chrome ...
- selenium+python设置爬虫代理IP
selenium+python设置爬虫代理IP 1. 背景 在使用selenium浏览器渲染技术,爬取网站信息时,一般来说,速度是很慢的.而且一般需要用到这种技术爬取的网站,反爬技术都比较厉害,对IP ...
- 教你创建一个免费的代理IP池(txt存储版本)
教你创建一个免费的代理IP池(txt存储版本) 很多人可能会为爬虫被ban,IP被封等反爬机制苦恼,接下来我就教给大家如何白嫖做一个代理IP池. 准备工作 首先是准备工作,因为是第一个版本,因此我打算 ...
- 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 ...
- selenium+python设置爬虫代理IP的方法
1. 设置背景 在使用selenium浏览器渲染技术,当我们爬取某个网站的信息的时候,在一般情况下速度都不是特别的快.而且需要利用selenium浏览器渲染技术爬取的网站,反爬虫的应对技术都比较厉害, ...
- 随机选出代理ip,免费的代理ip地址
from bs4 import BeautifulSoup import requests import random#从ip代理网站获取ip列表 def get_ip_list(url,header ...
- 获得代理ippython_Python学习笔记六(免费获取代理IP)
1 importrequests2 importurllib.request3 from bs4 importBeautifulSoup4 importrandom,time,re5 importra ...
最新文章
- ubuntu设置securecrt串口权限
- Python全栈开发——描述符
- css搜索框变圆脸角,CSS浮动布局
- Linux 命令之 pgrep -- 用于检索(搜索进程/查找进程)当前正在运行的进程
- Android应用中去掉标题栏方法总结(Eclipse+Android Studio)
- hbase 根据主键查询
- java提示框easyui风格_[Java教程]jQuery EasyUI 提示框(Messager)用法
- 关于iOS 7以后自定义UIAlertview(CustomIOS7AlertView)的用法心得
- Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)
- matlab 对称矩阵特征值为负数,【原创】古典Jaccobi方法计算实对称矩阵A的特征值和向...
- 交换网络组建实验报告
- 【常用0x000000类型颜色代码表】
- token与refresh_token
- 购买邮箱需要注意什么?教你发件邮箱购买流程
- linux 命令行下的复制和黏贴
- STM32F0系列出现overrun interrupt 和PB6 PB7映射的解决办法
- 利用imu估计roll、pitch的理解
- java读Excel转List对象
- 【商迪3D】与您细说什么是VR虚拟电子沙盘3D数字沙盘有什么功能
- 诺基亚5800XM深度测