用ipython调试webdriver selenium找元素 不用多次打开浏览器

本文主要是介绍用ipython调试webdriver selenium找元素 不用多次打开浏览器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

运行文件,可把相关变量,函数保存在当前,不必多次打开chrome

%run my_script.py

文件内容:
my_script.py

import pymongo,time,os,json,random
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from pyquery import PyQuery as pq
from config import * #数据库、关键词、爬取页数 配置信息
from urllib.parse import quote# browser = webdriver.Chrome()
# browser = webdriver.PhantomJS(service_args=SERVICE_ARGS)chrome_options = webdriver.ChromeOptions()
# chrome_options.add_argument('--headless')
chrome_options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36')
browser = webdriver.Chrome(r'F:\Demo\python\dianshang\chromedriver.exe',chrome_options=chrome_options)
# 读取隐藏webdriver特征的js
with open('./stealth.min.js') as f:js = f.read()
# 在每个页面加载前执行隐藏driver特征的js实现反爬
browser.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": js
})
wait = WebDriverWait(browser, 20)
client = pymongo.MongoClient(MONGO_URL) #读取数据库连接地址
db = client[MONGO_DB] #读取数据库名#浏览器复制到原始cookie文件
original_cookie_path='./cookies/original_cookies.txt'
cookies_path='./cookies/cookies.txt' #转化为json后的cookies
url='https://pinduoduo.com'#把从浏览器复制的原始cookies转为json格式并保存
def original_to_cookies():with open(original_cookie_path) as f:original_cookie=f.read()cookie_list=original_cookie.split(';')# print(cookie)cookies={}for c in cookie_list:k,v=c.split('=',1)cookies[k]=v# print(cookies)with open (cookies_path,'w',encoding='utf-8') as f:f.write(json.dumps(cookies))print('cookie成功转为json格式并保存')# 首次手动登录把cookie保存到文本
def save_cookies(cookies):# 保存cookies到文件,参数来自browser.get_cookies()path = os.getcwd() + '/cookies/'if not os.path.exists(path):os.makedirs(path)with open(path + 'cookies.txt', 'w') as f:cookie = json.dumps(cookies)f.write(cookie)print('cookie登录信息成功保存到文件')def read_add_cookie():#cookie登录:读取文件中的cookie并添加到浏览器中实现自动登录path = os.getcwd() + '/cookies/'if os.path.exists(path):# 读取添加cookiewith open('./cookies/cookies.txt','r',encoding='utf-8') as f:cookies=json.loads(f.read())browser.get(url) #刷新使cookie生效browser.delete_all_cookies()for cookie in cookies:browser.add_cookie(cookie)browser.refresh() # 添加cookie后要刷新才能生效print('cookies登录信息成功添加到浏览器')else:print('没有cookie文件!请进行初始手动登录!')def is_Login():# 是否登录:查找登录窗口的元素列表(注意是elements)login=browser.find_elements(By.XPATH,'//*[@id="mf-mms-goods-container"]/div/div/div[1]/span')if len(login)==1: #存在证明登录成功,返回真return Trueelif len(login)==0:return Falsedef login():if not is_Login(): print('cookie登录中,请稍等……')read_add_cookie()time.sleep(5)# 如果没有登录则循环等待5while not is_Login():print('cookie登录失败,请手动进行登录')time.sleep(5)# 结束循环表示登录成功,把cookies保存到文件print('手动登录成功!')cookies=browser.get_cookies()save_cookies(cookies) #保存登录成功的cookie以便下次登录else:print('已经登录,即将开始数据采集')

这篇关于用ipython调试webdriver selenium找元素 不用多次打开浏览器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965176

相关文章

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

Python Selenium动态渲染页面和抓取的使用指南

《PythonSelenium动态渲染页面和抓取的使用指南》在Web数据采集领域,动态渲染页面已成为现代网站的主流形式,本文将从技术原理,环境配置,核心功能系统讲解Selenium在Python动态... 目录一、Selenium技术架构解析二、环境搭建与基础配置1. 组件安装2. 驱动配置3. 基础操作模

Python MCPInspector调试思路详解

《PythonMCPInspector调试思路详解》:本文主要介绍PythonMCPInspector调试思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录python-MCPInspector调试1-核心知识点2-思路整理1-核心思路2-核心代码3-参考网址

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

vscode不能打开终端问题的解决办法

《vscode不能打开终端问题的解决办法》:本文主要介绍vscode不能打开终端问题的解决办法,问题的根源是Windows的安全软件限制了PowerShell的运行,而VSCode默认使用Powe... 遇到vscode不能打开终端问题,一直以为是安全软件限制问题,也没搜到解决方案,因为影响也不大,就没有管

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安