当前位置: 首页 > news >正文

重庆网站建设联系电话西宁市企业建站专业

重庆网站建设联系电话,西宁市企业建站专业,游戏网页制作代码,免费找工程项目承包软件人生苦短#xff0c;我用py 文章目录人生苦短#xff0c;我用py关于部分网页无法找到元素的问题1方案1方案2关于部分网页无法找到元素的问题2解决方案被网站检查出来我们使用了selenium了怎么办#xff1f;如何实现前进后退当使用py删除文件时报禁止访问怎么办怎么使用py实现…人生苦短我用py 文章目录人生苦短我用py关于部分网页无法找到元素的问题1方案1方案2关于部分网页无法找到元素的问题2解决方案被网站检查出来我们使用了selenium了怎么办如何实现前进后退当使用py删除文件时报禁止访问怎么办怎么使用py实现解压文件怎么打开系统的图片应用向用户展示图片怎么去下载网络资源怎么获取当前路径怎么使用Webderive截图JSON数据的天坑通用代码分享如何截长图​ 关于部分网页无法找到元素的问题1 问题描述 这个问题我想大概还是基础知识不牢靠的原因 selenium中的寻找元素只是能寻找到当前页面的一个html中的元素如果出现嵌套的网页就无法寻找到所嵌套网站中的元素的对我说的就是iframe这个自带黑魔法的东西 上图 出现这种情况是找不到的 方案1 我们需要先获取iframe中的src也就是嵌套网页的地址然后再去请求就好了 # 寻找第一层框架入口 s Driver.find_element(By.ID, frame_content).get_attribute(src) # 进入第一层框架入口 Driver.get(s)方案2 当然我们页可以直接去对iframe执行点击操作这样更快更人性化 关于部分网页无法找到元素的问题2 问题描述 这种情况是出现打开新的网页的情况当我们打开了新的页面时但是我们WebDriver并不会自动跳转的他还在原来的页面时所以我们去寻找新页面中的元素就会找不到了 如图所示 解决方案 那怎么样让驱动也去跳转那 那我们需要获取句柄了我只会windows平台上的 注意这是我们获取的时当前驱动的所有句柄如果有两个页面的话就会有两个句柄的于是我们取出最后也个句柄并使用switch_to.window方法使我们的浏览器驱动跳转到我们需要的及第二个页面。 # 获取当前句柄这很重要url Driver.window_handles# 跳转到我们需要的网页Driver.switch_to.window(url[1])被网站检查出来我们使用了selenium了怎么办 问题描述 现在自动化工具越来越火了一些厂商就针对与自动化工具做了限制如如果加了无头模式 一些网站的js就会检测出来使我们的操作失效 解决方法 直接看代码吧这玩意不好解释 # 创建option对象options Options()# 设置无头模式即浏览器不弹出只在后台运行options.add_argument(headless)# 解决部分网站的对于Selenium的js监测机制# 以下2行options.add_experimental_option(excludeSwitches, [enable-automation])options.add_experimental_option(useAutomationExtension, False)# 加载浏览器驱动Webdriver Service(driverfilename)# 加载驱动和无头driver webdriver.Edge(serviceWebdriver, optionsoptions)# 解决部分网站的对于Selenium的js监测机制# 以下1行driver.execute_cdp_cmd(Page.addScriptToEvaluateOnNewDocument,{source: Object.defineProperty(navigator,webdriver,{get:()undefind})})如何实现前进后退 前进及不用说了直接请求即可了但是怎么去实现后退那 上代码这么少哈哈其实坑多着哩这个后退只能实现一个也就是说如果连续写多个back()就会失效的所以说该用driver.current_url去获取网址时就多用不要去懒省事的 # 回到上一个页面Driver.back()# 获取当前urldriver.current_url当使用py删除文件时报禁止访问怎么办 不要慌不要慌这种情况多出现在删除文件夹时这时我们就需要去使用shutil这个模块了它可以保保证删除文件夹时不出错但是用它去删除文件时却会出错的要牢记 import shutil if os.path.exists(name1):shutil.rmtree(name1) if os.path.exists(name):os.remove(name)怎么使用py实现解压文件 我们使用zipfile模块去实现首先打开文件 使用extratall()就可以实现解压了 import zipfile# 文件解压with zipfile.ZipFile(name) as zf:zf.extractall()print(解压完成)注意解压完成是会自动删除源文件的 怎么打开系统的图片应用向用户展示图片 注意这里好像只支持win系统 代码 def showimg(path):userPlatform platform.system() # 获取操作系统if userPlatform Windows: # Macos.startfile(path)else:print(暂且不支持您的操作系统) 效果展示 怎么去下载网络资源 下载网络资源 dow requests.get(downloadurl, headers)open(drive.zip, wb).write(dow.content)下载网页 使用的是py自带的标准库不需要去下载第3方库 urllib.request.urlretrieve(URL路径,保存路径)怎么获取当前路径 一句 os.getcwd()怎么使用Webderive截图 Driver.save_screenshot(path)JSON数据的天坑 当我们去使用xhr窃取响应时通常会使用post请求但是请注意这里post 请求中的参数 1 必须是双引号 2 就算是数字也必须加上引号 3 没有值的话就加空字符串 4 布尔值必须是小写的true/false 请注意第2条如果不加引号js会把它按照int32类型处理但是当创出int32的范围时就会请求失败这就是为什么int类型的数据也要加引号的 原因 1、传统表单post请求xhr的请求 import requests url “https://tests” data {“key”:“value”} res requests.post(urlurl,datadata) print(res.text) 2、json类型的post请求 import requests url “https://tests” data ‘{“key”:“value”}’ #字符串格式 res requests.post(urlurl,datadata) print(res.text) ** 最后的一些未解决的问题 我们使用selenium获取到的cooike不全怎么办 怎么根据快捷方式找到源文件的位置 恳请大佬们解答** ​ 通用代码分享 import platform import os import sys import zipfile import shutil import requests from selenium import webdriver from selenium.webdriver.edge.service import Service from selenium.webdriver.edge.options import Options from win32com.client import Dispatch# 初始化Drvier def init(driverfilename, isHeadless):print(开始浏览器初始化\n)# 创建option对象options Options()if isHeadless:# 设置无头模式即浏览器不弹出只在后台运行options.add_argument(headless)# 解决部分网站的对于Selenium的js监测机制# 以下2行options.add_experimental_option(excludeSwitches, [enable-automation])options.add_experimental_option(useAutomationExtension, False)# 加载浏览器驱动Webdriver Service(driverfilename)# 加载驱动和无头driver webdriver.Edge(serviceWebdriver, optionsoptions)# 解决部分网站的对于Selenium的js监测机制# 以下1行driver.execute_cdp_cmd(Page.addScriptToEvaluateOnNewDocument,{source: Object.defineProperty(navigator,webdriver,{get:()undefind})})print(浏览器初始化完成)return driver# 获取当前浏览器的版本 def getversion(filename):parser Dispatch(Scripting.FileSystemObject)version parser.GetFileVersion(filename)print(当前Edge浏览器版本为 version)return version# 获取浏览器的源路径 def getEdgePath():while True:print(请输入您的Edge浏览器的源路径不是快捷方式的路径方法1 找到桌面上的Edge浏览器右击鼠标选择“打开文件位置”2 进入新打开的文件夹之后找到“msedge.exe”文件右击复制文件路径3 将刚刚复制的路径复制过来即可)path1 input()if path1 ! :return path1else:print(请输入Edge浏览器的源路径)# 打开路径中的文件 def showFile(path):userPlatform platform.system() # 获取操作系统if userPlatform Windows: # Macos.startfile(path)else:print(暂且不支持您的操作系统)# 获取是否开启后台模式 def isHeadless():while True:isHeadless input(是Y否N开启后台模式)if (isHeadless Y or isHeadless N):if isHeadless Y:return Trueelse:return Falseelse:print(请输入正确指令)# 浏览器驱动下载 def downloadandZip(downloadurl, headers, name):try:print(正在下载驱动)dow requests.get(downloadurl, headers)open(drive.zip, wb).write(dow.content)print(驱动下载完成正在解压)# 文件解压with zipfile.ZipFile(name) as zf:zf.extractall()print(解压完成)return Trueexcept:print(浏览器驱动下载失败)# 程序终止sys.exit()# 获取下载的浏览器驱动的路径 # 同时 # 1 删除无关文件 # 2 检测浏览器驱动是否受损 def startDownloadandZipexc(downloadurl, headers):name drive.ziptemp1 Driver_NotesdownloadandZip(downloadurl, headers, name)# 删除无关文件print(正在删除无关文件)drivername msedgedriver.exeif os.path.exists(temp1):shutil.rmtree(temp1)if os.path.exists(name):os.remove(name)print(无关文件删除成功)if os.path.exists(drivername):return os.getcwd() \msedgedriver.exeelse:while True:t input(浏览器驱动受损或被删除是(Y)否(N)重新下载)if t Y or t N:if t Y:# 驱动下载downloadandZip(downloadurl, headers, name)return os.getcwd() \msedgedriver.exeelse:print(正在退出)return False# 入口 if __name__ __main__:headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400}print(欢迎使用xxx系统\n)# 获取浏览器的源路径path1 getEdgePath()# 格式化路径path2 path1.replace(\\, //).replace(\, )# 获取浏览器版本oldversion getversion(path2)# 浏览器驱动下载地址downloadurl https://msedgedriver.azureedge.net/ oldversion /edgedriver_win64.zip# 获取浏览器驱动的地址driverfilepath startDownloadandZipexc(downloadurl, headers)if driverfilepath ! False:print(浏览器驱动器路径为 driverfilepath 不必要请勿删除)# 是否开启无头模式isHeadless isHeadless()# 初始化DriverDriver init(driverfilepath, isHeadless) 如何截长图 效果 不过请注意要实现截长图浏览器必须开启无头模式 不过请注意要实现截长图浏览器必须开启无头模式 不过请注意要实现截长图浏览器必须开启无头模式 driver.get(https://blog.csdn.net/yutu75/article/details/115524985)# 用js获取页面的宽高如果有其他需要用js的部分也可以用这个方法width driver.execute_script(return document.documentElement.scrollWidth)height driver.execute_script(return document.documentElement.scrollHeight)# 获取页面宽度及其宽度print(width, height)# 将浏览器的宽高设置成刚刚获取的宽高driver.set_window_size(width, height)time.sleep(1)# 截图并关掉浏览器driver.get_screenshot_as_file(xx.png)driver.quit()
http://www.dnsts.com.cn/news/168152.html

相关文章:

  • 网站规划与建设的流程与方法 高中信息技术东莞横沥地图
  • 文章类型的网站模版关键词优化最好的方法
  • 水产食品企业网站模板做家教的正规网站
  • 大型网站建设优化排名鞍山玉佛苑官网
  • 手机端模板网站东莞市微客巴巴做网站
  • 做网站没有数据库建设网站的不足
  • 网站上传到空间代运营是如何骗人的
  • 那个网站做国外售货wordpress模块架构
  • 南宁市建设处网站建筑公司经营范围大全
  • 专业建站推广企业seo优化服务是什么意思
  • 网站跟自媒体建设广州白云网站建设
  • 做3d效果图的网站有哪些同行做的好的网站
  • 寓意好有内涵的公司名字贺州seo
  • 网站模板的好处中国商标注册查询官网
  • 网站模板加后台制作app开发的公司
  • vfp网站开发网站开发外包价格
  • 做个网站需要什么设备广西临桂建设局网站
  • 鄞州区卖场设计网站建设深圳做小程序的公司排名
  • 赣州人才网站怎么建医疗网站
  • php前台网站开发自己做的网站能放到网上么
  • 进贤网站建设网站备案的影响
  • 惠城东莞网站建设wordpress添加自定义字段
  • 网站信息资源建设包括哪些网站建设 费用预算
  • 南宁网站排名外包wordpress 导航样式
  • 网站教程设计重庆市建设工程信息网络
  • 网站建设与推广实训总结杭州外贸公司
  • 网站开发多线程开发北京王府井美食
  • 如何免费创建网站平台网站logo图怎么做的
  • 物流行业网站建设福田瑞沃小金刚
  • 网站建设方案预计效果做网页要钱吗