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

小辣椒昆明网站开发html源码大全

小辣椒昆明网站开发,html源码大全,宜昌商城网站建设,郑州有哪些搞网站开发的公司目录 1. 切换 Frame 2. 前进后退 3. 对 Cookies 操作 4. 选项卡管理(了解) 5. 异常处理 6. 反屏蔽 7. 无头模式 1. 切换 Frame 我们知道网页中有一种节点叫作 iframe#xff0c;也就是子 Frame#xff0c;相当于页面的子页面#xff0c;它的结构和外部网页的结构完全…目录 1. 切换 Frame 2. 前进后退 3. 对 Cookies 操作 4. 选项卡管理(了解) 5. 异常处理 6. 反屏蔽 7. 无头模式 1. 切换 Frame 我们知道网页中有一种节点叫作 iframe也就是子 Frame相当于页面的子页面它的结构和外部网页的结构完全一致(见下图子页面和外部网页)。Selenium 打开页面后它默认是在父级 Frame 里面操作而此时如果页面中还有子 Frame它是不能获取到子 Frame 里面的节点的。 外部网页 子网页 尝试获取 id 为 droppable 的节点 from selenium import webdriver browser webdriver.Chrome() url https://www.runoob.com/try/try.php?filenamejqueryui-api-droppable browser.get(url) drop browser.find_element_by_id(droppable) drag browser.find_element_by_id(draggable) print(drop) print(drag) 这时就需要使用 switch_to.frame() 方法来切换 Frame。在获取节点drop前加一行代码。 browser.switch_to.frame(iframeResult) 结果 在子页面那如何切换回父页面呢使用switch_to.parent_frame()不切换是获取不到的会报错。以下代码在上方代码下进行 browser.switch_to.parent_frame() logo browser.find_element_by_class_name(logo) print(logo) 2. 前进后退 平常使用浏览器时都有前进和后退功能Selenium 也可以完成这个操作它使用 back() 方法后退使用 forward() 方法前进。示例如下  import time from selenium import webdriverbrowser webdriver.Chrome() browser.get(https://www.baidu.com/) browser.get(https://www.taobao.com/) browser.get(https://www.python.org/) browser.back() time.sleep(1) browser.forward() browser.close() 这里我们连续访问 3 个页面然后调用 back() 方法回到第二个页面接下来再调用 forward() 方法又可以前进到第三个页面。 3. 对 Cookies 操作 使用 Selenium还可以方便地对 Cookies 进行操作例如获取、添加、删除 Cookies 等。示例如下 from selenium import webdriverbrowser webdriver.Chrome() browser.get(https://www.zhihu.com/explore) print(browser.get_cookies()) browser.add_cookie({name: name, domain: www.zhihu.com, value: germey}) print(browser.get_cookies()) browser.delete_all_cookies() print(browser.get_cookies()) 输出如下 [{domain: www.zhihu.com, httpOnly: False, name: osd, path: /, sameSite: Lax, secure: False, value: V1ocBUkf2nzTPx8pNBwqqyhuCWsgK5oRpm1ZTFFNlUGUVyFtdui_krU_Ey0_gBglVylVNsNamm6W9zrlar9JYPk}, {domain: www.zhihu.com, httpOnly: False, name: JOID, path: /, sameSite: Lax, secure: False, value: WlocAEoS2nzWPBIpNBkppihuDGgtK5oUpWBZTFROmEGUUiJgdui6kbg_Eyg8jRglUipYNsNfmWOW9z_mZ79JZfo}, {domain: .zhihu.com, expiry: 1741067645, httpOnly: False, name: Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49, path: /, sameSite: Lax, secure: False, value: 1709531646}, {domain: .zhihu.com, expiry: 1744091643, httpOnly: False, name: d_c0, path: /, sameSite: Lax, secure: False, value: ANAb2lgVQhiPTrftnfH4Ix-h3eEqjOywHYA|1709531641}, {domain: .zhihu.com, httpOnly: False, name: _xsrf, path: /, sameSite: Lax, secure: False, value: 5fe3527d-f272-4b5a-8b86-18e0418953c6}, {domain: .zhihu.com, httpOnly: False, name: Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49, path: /, sameSite: Lax, secure: False, value: 1709531646}, {domain: www.zhihu.com, httpOnly: False, name: SESSIONID, path: /, sameSite: Lax, secure: False, value: 3KbqUAnjUH6Hl9CImOgmWl2acunCWhFuo51qSj8XEUI}, {domain: www.zhihu.com, httpOnly: False, name: KLBRSID, path: /, sameSite: Lax, secure: False, value: f48cb29c5180c5b0d91ded2e70103232|1709531643|1709531641}, {domain: .zhihu.com, expiry: 1744091643, httpOnly: False, name: _zap, path: /, sameSite: Lax, secure: False, value: ac23bfd6-03d3-4ab9-aae5-d5fdbd472290}] [{domain: www.zhihu.com, httpOnly: False, name: osd, path: /, sameSite: Lax, secure: False, value: V1ocBUkf2nzTPx8pNBwqqyhuCWsgK5oRpm1ZTFFNlUGUVyFtdui_krU_Ey0_gBglVylVNsNamm6W9zrlar9JYPk}, {domain: www.zhihu.com, httpOnly: False, name: JOID, path: /, sameSite: Lax, secure: False, value: WlocAEoS2nzWPBIpNBkppihuDGgtK5oUpWBZTFROmEGUUiJgdui6kbg_Eyg8jRglUipYNsNfmWOW9z_mZ79JZfo}, {domain: .zhihu.com, expiry: 1741067645, httpOnly: False, name: Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49, path: /, sameSite: Lax, secure: False, value: 1709531646}, {domain: .zhihu.com, expiry: 1744091643, httpOnly: False, name: d_c0, path: /, sameSite: Lax, secure: False, value: ANAb2lgVQhiPTrftnfH4Ix-h3eEqjOywHYA|1709531641}, {domain: .zhihu.com, httpOnly: False, name: _xsrf, path: /, sameSite: Lax, secure: False, value: 5fe3527d-f272-4b5a-8b86-18e0418953c6}, {domain: .zhihu.com, httpOnly: False, name: Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49, path: /, sameSite: Lax, secure: False, value: 1709531646}, {domain: www.zhihu.com, httpOnly: False, name: SESSIONID, path: /, sameSite: Lax, secure: False, value: 3KbqUAnjUH6Hl9CImOgmWl2acunCWhFuo51qSj8XEUI}, {domain: .www.zhihu.com, httpOnly: False, name: name, path: /, sameSite: Lax, secure: True, value: germey}, {domain: www.zhihu.com, httpOnly: False, name: KLBRSID, path: /, sameSite: Lax, secure: False, value: f48cb29c5180c5b0d91ded2e70103232|1709531643|1709531641}, {domain: .zhihu.com, expiry: 1744091643, httpOnly: False, name: _zap, path: /, sameSite: Lax, secure: False, value: ac23bfd6-03d3-4ab9-aae5-d5fdbd472290}] [] 4. 选项卡管理(了解) 在访问网页的时候会开启一个个选项卡(同一浏览器的窗口)。在 Selenium 中我们也可以对选项卡进行操作。示例如下 import time from selenium import webdriverbrowser webdriver.Chrome() browser.get(https://www.baidu.com) browser.execute_script(window.open()) print(browser.window_handles) browser.switch_to_window(browser.window_handles[1]) # 该方法已弃用了解即可 browser.get(https://www.taobao.com) time.sleep(1) browser.switch_to_window(browser.window_handles[0]) browser.get(https://python.org) 首先访问了百度然后调用了 execute_script() 方法这里传入 window.open() 这个 JavaScript 语句新开启一个选项卡。 接下来我们想切换到该选项卡。这里调用 window_handles 属性获取当前开启的所有选项卡返回的是选项卡的代号列表。要想切换选项卡只需要调用 switch_to_window() 方法即可其中参数是选项卡的代号。这里我们将第二个选项卡代号传入即跳转到第二个选项卡接下来在第二个选项卡下打开一个新页面然后切换回第一个选项卡重新调用 switch_to_window() 方法再执行其他操作即可。 5. 异常处理 使用try except 可以参考官方文档7. WebDriver API — Selenium Python Bindings 2 documentation。 6. 反屏蔽 现在很多网站增加了对 Selenium 的检测被检测到了就直接屏蔽。 在大多数情况下检测的基本原理是检测当前浏览器窗口下的 window.navigator 对象中是否含 webdriver 属性。因为在正常使用浏览器时这个属性应该是 undifined一旦使用了 Selenium它就会给 window.navigator 对象设置 webdriver 属性。很多网站通过 JavaScript 语句判断是否存在 webdriver 属性如果存在直接屏蔽。 例如这个网站Scrape | Movie # 使用以下代码尝试爬取页面内容 from selenium import webdriverbrowser webdriver.Chrome() url https://antispider1.scrape.center/ browser.get(url) print(browser.page_source) 面对此情况我们可以使用 Selenium 中的 CDP (谷歌开发工具协议) 解决利用它可在每个页面刚加载的时候就执行 JavaScript 语句将 webdriver 置空。 ChromeOptions() 是Selenium 中用于配置Chrome浏览器选项的类。通过ChromeOptions() 可以设置一系列浏览器参数和行为。 from selenium import webdriver from selenium.webdriver import ChromeOptionsoptions ChromeOptions() # 下面两行是用来加选项隐藏 WebDriver 提示条和自动化扩展信息 options.add_experimental_option(excludeSwitches, [enable-automation]) options.add_experimental_option(useAutomationExtension, False)browser webdriver.Chrome(optionsoptions) browser.execute_cdp_cmd(Page.addScriptToEvaluateOnNewDocument, {source: Object.defineProperty(navigator, webdriver, { get: () undefined }) }) url https://antispider1.scrape.center/ browser.get(url) print(browser.page_source) # CDP方法 Page.addScriptToEvaluateOnNewDocument # JavaScript 语句将 webdriver 置空 source: Object.defineProperty(navigator, webdriver, { get: () undefined }) 在大多数情况下以上方法可以实现 Selenium 的反屏蔽。因作者目前水平有限对此写的较粗造可直接将其当作模板套着试用就可能解决问题就好。 7. 无头模式 在运行上述代码时会弹出浏览器窗口偶尔会造成麻烦。当采用无头模式就可避免弹出。 from selenium import webdriver from selenium.webdriver import ChromeOptionsoptions ChromeOptions() # 设置 ChromeOptions 对象 options.add_argument(--headless) # 开启无头模式browser webdriver.Chrome(optionsoptions)browser.set_window_size(1300, 700) # 设置窗口大小 browser.get(https://www.baidu.com) browser.get_screenshot_as_file(baidu.png) # 得到窗口截图存下 文章到此结束本人新手若有错误欢迎指正若有疑问欢迎讨论。若文章对你有用点个小赞鼓励一下谢谢大家一起加油吧
http://www.hkea.cn/news/14290444/

相关文章:

  • 西安哪些做网站的公司好做网站需要源码
  • 嘉兴网站建设服务国外大气网站设计
  • 门户网站是什么意思啊如何建一个营销网站
  • 网站建设文化策划方案做旅游广告在哪个网站做效果好
  • 响应式网站 产品轮播代码wordpress 在线 主题
  • 网店代运营哪里好网站seo优化关键词快速排名上首页
  • 国外注册网站做百度seo无锡黄页网
  • 建设小企业网站步骤wordpress 仿煎蛋妹子图
  • 旅游网站平台网站的类型和特色
  • 公司网站建设代码都写完了南充网站建设略奥科技
  • 外贸多语言网站建设wordpress功能解释
  • 国外用什么做网站互联网公司排名朗玛
  • 阳泉市住房保障和城乡建设管理局网站企业微信网站建设
  • 网站的搜索引擎方案房和城乡建设部网站
  • o2o网站建设要多少钱c 网站开发视频
  • 用来做收录的网站加盟什么网站建设
  • 网站空间怎么更换wordpress 商城 app
  • 自己做网站才是互联网微信小程序公众号开发
  • 重庆智能网站建设哪里好政务建设网站得必要性
  • 适合个人网站的名称大连事件最新消息
  • 自己建的网站打开的特别慢柬埔寨网赌网站开发
  • 多个织梦dedecms网站怎么做站群推广普通话手抄报内容资料
  • 网站如何动态修改主页陇南市建设局官方网站
  • seo优化网站的手段简述网站的制作步骤
  • 高端大气企业网站模板云主机和云桌面的区别
  • 预约型网站模板源码无锡做网站f7wl
  • 网站备案网站要有内容吗江门58同城网
  • 网站开发设计制作合同网站建设职位
  • 网站模板和源码区别互联网营销师有什么用
  • 做网站的利与弊做班级玩网站做哪些方面