资讯动态

python selenium启动常用

发布时间:2026/10/30 1:14:56 来源:尧图企业网站定制
fromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeysimporttimeimportrefrombs4importBeautifulSoupasbsimportpickleimportrequestsimportopenpyxlfromopenpyxlimportload_workbookfromselenium.webdriver.common.action_chainsimportActionChainsfromPILimportImageimportjsonimportosfromselenium.webdriver.chrome.optionsimportOptionsimportrandom optionswebdriver.ChromeOptions()# 1. 解决证书错误你的核心需求options.add_argument(--ignore-certificate-errors)options.add_argument(--allow-running-insecure-content)# 2. 隐藏自动化特征让网站难以检测是 Selenium#options.add_experimental_option(excludeSwitches, [enable-automation, enable-logging]) # 合并两个开关 这个打关闭cmd 不会关闭浏览器options.add_experimental_option(useAutomationExtension,False)options.add_argument(--disable-blink-featuresAutomationControlled)# 2. 基础窗口与语言你原有的 options.add_argument(--window-size1920,1080)options.add_argument(--langzh-CN)options.add_argument(--log-level3)# 只显示 FATAL 日志# 3. 【新增】内存与进程“保命”配置防止32GB爆满死机 options.add_argument(--js-flags--max-old-space-size1536)# ② 限制浏览器最多同时存在的渲染进程数量为 15 个防止意外开太多options.add_argument(--renderer-process-limit15)# ③ 彻底禁用 GPU 硬件加速视频解码泄漏的元凶options.add_argument(--disable-gpu)options.add_argument(--disable-software-rasterizer)# ④ 禁用后台网络请求和预加载减少突发内存申请options.add_argument(--disable-background-networking)options.add_argument(--disable-sync)options.add_argument(--disable-default-apps)options.add_argument(--disable-component-update)# ⑥ 关闭 zygote 进程避免 Selenium 长期运行时的内存碎片堆积options.add_argument(--no-zygote)browserwebdriver.Chrome(optionsoptions)#Chrome浏览器驱动browser.get(https://baidu.com)#打开网页defc():browser.switch_to.default_content()bobrowser.find_element_by_id(frame)browser.switch_to.frame(bo)jsvar qdocument.documentElement.scrollLeft1000#左右jsvar qdocument.documentElement.scrollTop100browser.execute_script(js)jsvar childdocument.getElementById(link);child.parentNode.removeChild(child[115]);jsvar childdocument.getElementsByClassName(pv-ask-modal-wrap)[0];child.remove();try:#清零视频播放时间jsvar childdocument.getElementsByTagName(video);return child[0].currentTime 0;browser.execute_script(js)except:passbrowser.execute_script(arguments[0].scrollIntoView(true);,i)browser.execute_script(arguments[0].scrollIntoView(true); window.scrollBy(0, -100);,i)browser.execute_script(arguments[0].click();,dd)foriinrange(1):aopen(data.txt,encodingutf-8)aa.read()aajson.loads(a)加载超时设置browser.set_page_load_timeout(5)# 二进制转16进制a00000000hex(int(a,2))滑动元素 browser.execute_script(arguments[0].scrollIntoView(true);,i)fromseleniumimportwebdriverimporttimefromselenium.webdriver.common.action_chainsimportActionChainsimportrefromselenium.webdriver.common.keysimportKeysfrombs4importBeautifulSoupasbsimportpickle optionswebdriver.ChromeOptions()options.add_experimental_option(excludeSwitches,[enable-logging])browserwebdriver.Chrome(optionsoptions)#browser webdriver.Chrome()#Chrome浏览器驱动jswindow.open(https://www.baidu.com);browser.execute_script(js)browser.get(https://www.taobao.com/)#打开网页defdian(s,w):xxbrowser.find_elements_by_css_selector(s)foriinxx:ifwi.text:print(i.text)i.click()time.sleep(1)breakelse:passhandlesbrowser.window_handles browser.switch_to.window(handles[0])jsvar qdocument.getElementById(id).scrollTop10000browser.execute_script(js jsvar qdocument.documentElement.scrollTop100browser.execute_script(js)jsmyViddocument.querySelector(video);alert(myVid.duration);# 这里是获取第一个video标签browser.execute_script(js)#取得一个视频长度jsmyViddocument.getElementById(videoSource);alert(myVid.duration);browser.execute_script(js)try:alertbrowser.switch_to.alert conalert.textprint(con)tint(float(con)/60)1print(t)alert.accept()except:t30jsvar qdocument.getElementsByClassName(content)[0].scrollTop 10000#可指定元素滑动defc():bobrowser.find_element_by_xpath(//*[idtask-content-iframe])browser.switch_to.frame(bo)browser.switch_to.default_content()htmlbo.get_attribute(innerHTML)jsvideoList(10108325)browser.execute_script(ji)try:alertbrowser.switch_to.alert conalert.textprint(con)alert.accept()except:pass#元素截图sbrowser.find_element_by_id(safecode)s.screenshot(1.png)#。。。。。。。。。。。。。。。。。。。。。。。。。。。defc():#滑动元素foriinrange(1):browser.switch_to.default_content()bobrowser.find_element_by_id(baxia-dialog-content)browser.switch_to.frame(bo)dbrowser.find_element_by_id(nc_1_n1z)ActionChains(browser).click_and_hold(d).perform()xx300whilexx0:xrandom.randint(50,80)xxxx-xprint(x)ActionChains(browser).move_by_offset(xoffsetx,yoffset0).perform()ActionChains(browser).release(d).perform()# selenium 4.0#idxbrowser.find_element(By.ID,kw)#id#namexbrowser.find_element(By.NAME,wd)#id#classxbrowser.find_element(By.CLASS_NAME,cos-pc)#id#TAG p div span ul lixbrowser.find_element(By.TAG_NAME,body)#id#By.LINK_TEXT表示全部匹配linktext定位找到元素xbrowser.find_element(By.LINK_TEXT,百度首页)#id#By.PARTIAL_LINK_TEXT表示模糊匹配linktext定位找到元素xbrowser.find_element(By.PARTIAL_LINK_TEXT,百度首页)xbrowser.execute_script(js)defma():defsss():importddddocr ocrddddocr.DdddOcr()withopen(1.png,rb)asf:img_bytesf.read()resocr.classification(img_bytes)#print(res)returnresforiinrange(10):ubrowser.find_element_by_id(checkcode)#验证码u.screenshot(1.png)msss()print(m)iflen(m)4:returnmelse:u.click()time.sleep(1)defdeng():foriinrange(1):nmbrowser.get(http://lzjtu.lllnet.cn/)time.sleep(5)nnbrowser.find_element_by_id(loginName)mmbrowser.find_element_by_id(password)numbrowser.find_element_by_id(randNum)nn.clear()mm.clear()num.clear()ama()nn.send_keys(n)mm.send_keys(m)num.send_keys(a)time.sleep(1)browser.find_element_by_class_name(l_btn1).click()time.sleep(5)defvo():#获取当前播放时间如果两次时间没变就表示暂停了就点播放foriinrange(1):try:jsmyViddocument.getElementById(videoMedia);alert(myVid.currentTime);browser.execute_script(js)time.sleep(1)except:passtry:alertbrowser.switch_to.alert conalert.text tfloat(con)alert.accept()except:t0time.sleep(6)try:jsmyViddocument.getElementById(videoMedia);alert(myVid.currentTime);browser.execute_script(js)time.sleep(1)except:passtry:alertbrowser.switch_to.alert conalert.text ttfloat(con)alert.accept()except:tt0ifttt:try:browser.find_element_by_id(videoMedia).click()except:passelse:passMicrosoft Edgehttps://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/?formMA13LHchromedriver驱动下载地址最新下载链接https://googlechromelabs.github.io/chrome-for-testing/http://chromedriver.storage.googleapis.com/index.html国内镜像https://registry.npmmirror.com/binary.html?pathchromedriver/同时提供geckodriver和iedriverserver的下载地址geckodriverhttps://github.com/mozilla/geckodriver/releasesiedriverserverhttp://selenium-release.storage.googleapis.com/index.html————————————————def open_html(d):for i in range(1): url http://www.gongxukexuexi.com/ headers {} headers[Accept]*/* headers[Accept-Encoding]gzip, deflate, br, zstd headers[Accept-Language]zh-CN,zh;q0.9 headers[Connection]keep-alive headers[Content-Length]293 headers[Content-Type]application/x-www-form-urlencoded; charsetUTF-8 headers[Cookie].sdlpalearnauthD2BC9CF1F6C6507F915A3EA5E94F44C42A72042A387DFDFEC82C9F535C20467ECF46D00857E816DA9C6ADA1A66A7826D40F8B683DB7CE22A0EB5400419657AAD1A80791B2829F23D491F573826A7610D291ABC04E9FD4BA6F10631A3C03D0E0C492F3DB7EB605D7662BAE4E0F5E87F603F9A1163857901B063CE3A4FA7F2BE5244967516 headers[Host]sdutcm.sdlpa.org.cn headers[Origin]https://sdutcm.sdlpa.org.cn headers[Referer]https://sdutcm.sdlpa.org.cn/home/Exam/17?cId512 headers[Sec-Fetch-Dest]empty headers[Sec-Fetch-Mode]cors headers[Sec-Fetch-Site]same-origin headers[User-Agent]Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 headers[X-Requested-With]XMLHttpRequest headers[sec-ch-ua]Chromium;v128, Not;ABrand;v24, Google Chrome;v128 headers[sec-ch-ua-mobile]?0 headers[sec-ch-ua-platform]Windows data classId17endJson%5B%7B%22id%22%3A21913%2C%22answer%22%3A%22A%22%7D%2C%7B%22id%22%3A21932%2C%22answer%22%3A%22A%22%7D%2C%7B%22id%22%3A21955%2C%22answer%22%3A%22A%22%7D%2C%7B%22id%22%3A21918%2C%22answer%22%3A%22A%22%7D%2C%7B%22id%22%3A21943%2C%22answer%22%3A%22A%22%7D%5Dcid512pid18249788defkan2(current_time0,browserbrowser):foriinrange(1):jsvar childdocument.getElementsByTagName(video);return child[0].currentTime 0;#清零视频播放时间jsvar childdocument.getElementsByTagName(video);return child[0].playbackRate 1.0;#视频倍数jsvar childdocument.getElementsByTagName(video);return child[0].duration#获取视频总长度#duration browser.execute_script(js)durationbrowser.run_js(js)tint(duration/60)2print(duration,t) 模拟视频播放匹配原始视频时间 Args: browser: Selenium WebDriver 实例 duration: 视频总时长秒默认60 current_time: 当前播放时间秒默认0 jsf (function() {{ const videoDuration {duration}; let videoCurrentTime {current_time}; const startTime Date.now() / 1000 - videoCurrentTime; function createFakeVideoStream() {{ const canvas document.createElement(canvas); canvas.width 2; canvas.height 2; const ctx canvas.getContext(2d); let frame 0; function drawFrame() {{ frame; const color 10 (frame % 5); ctx.fillStyle rgb(${{color}},${{color}},${{color}}); ctx.fillRect(0, 0, 2, 2); requestAnimationFrame(drawFrame); }} drawFrame(); return canvas.captureStream(30); }} const fakeStream createFakeVideoStream(); function replaceVideos() {{ document.querySelectorAll(video).forEach(v {{ if (v.src || v.querySelector(source[src]) || (v.srcObject !v.srcObject._isFake)) {{ if (v.srcObject) {{ v.srcObject.getTracks().forEach(t t.stop()); }} v.removeAttribute(src); v.querySelectorAll(source).forEach(s s.remove()); v.srcObject fakeStream; fakeStream._isFake true; // 重写时间相关属性 Object.defineProperty(v, duration, {{ get: () videoDuration, configurable: true }}); Object.defineProperty(v, currentTime, {{ get: () {{ const elapsed Date.now() / 1000 - startTime; return Math.min(elapsed, videoDuration); }}, set: (val) {{ videoCurrentTime val; }}, configurable: true }}); Object.defineProperty(v, paused, {{ get: () false }}); Object.defineProperty(v, ended, {{ get: () Date.now() / 1000 - startTime videoDuration }}); try {{ var __p v.play(); if (__p typeof __p.catch function) __p.catch(function(){{}}); }} catch (e) {{}} v.muted true; console.log(✅ 视频已替换时长: videoDuration s, 当前: videoCurrentTime s); }} }}); }} replaceVideos(); setInterval(replaceVideos, 2000); console.log(✅ 视频欺骗已注入); }})(); #browser.execute_script(js)browser.run_js(js)print(f✅ 假视频流已注入 (总时长:{duration}s, 已播放:{current_time}s))

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑