返回顶部
首页 > 资讯 > 精选 >Selenium抓不到内容的示例分析
  • 101
分享到

Selenium抓不到内容的示例分析

2023-06-17 02:06:07 101人浏览 薄情痞子
摘要

这篇文章主要为大家展示了“selenium抓不到内容的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Selenium抓不到内容的示例分析”这篇文章吧。有一些同学在写爬虫的时候,过于依赖

这篇文章主要为大家展示了“selenium抓不到内容的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Selenium抓不到内容的示例分析”这篇文章吧。

有一些同学在写爬虫的时候,过于依赖 Selenium,觉得只要使用模拟浏览器,在不被网站屏蔽的情况下,就可以爬到任何内容。

我们不讨论字体反爬虫和 CSS 反爬虫这两种情况。我们来看一段非常简单的网页。这个网页只有一个html 文件,不加载特殊字体,不加载 CSS  文件。

Selenium抓不到内容的示例分析

这个网页的奇怪之处在哪里呢?我们试一试使用 XPath Helper 来提取网页上面的红色文字,发现XPath 竟然无法找到这段文字,如下图所示:

Selenium抓不到内容的示例分析

然后我们使用 Selenium 来试一试:

Selenium抓不到内容的示例分析

Selenium果然无法获取 红字到内容。我们再打印一下网页的源代码:

Selenium抓不到内容的示例分析

这一次,Selenium 获取到的源代码,竟然跟 Chrome 开发工具里面显示的源代码不一样?

这个问题的关键,就在开发者工具里面的这样一段文字:

Selenium抓不到内容的示例分析

因为这个节点是一个shadow DOM[1]。shadow DOM 的行为跟 iframe很像,都是把一段HTML 信息嵌入到另一个 HTML  中。但不同的是,iframe被嵌入的地址需要额外再搭建一个 Http服务,而 shadow DOM 可以只嵌入一段 HTML 代码,所以它比 iframe  更节省资源。

在上面的截图中,通过下面这三行代码,我们把一个新的

标签嵌入到了原来的 HTML 中:

var content = document.querySelector('.content');     var root = content.attachShadow({mode: 'open'});     root.innerHTML = '<p class="real_content" style="color: red">你抓不到这段文字的!</p>'

而这个被嵌入的影子标签,就像 iframe 一样,是无法直接使用 Selenium 提取的。如果强行提取,那么,我们需要使用 javascript 获取  shadow DOM,然后再进行提取。我们来看一段可以正常工作的代码:

shadow = driver.execute_script('return document.querySelector(".content").shadowRoot') content = shadow.find_element_by_class_name('real_content') print(content.text)

运行效果如下图所示:

Selenium抓不到内容的示例分析

这段代码,首先通过 JavaScript 找到shadow-root的父节点元素,然后返回这个元素的.shadowRoot属性。在 python  里面拿到这个属性以后,使用.find_element_by_class_name()方法获取里面的内容。

要特别注意的是,拿到shadow-root节点以后,只能通过 CSS 选择器进一步筛选里面的内容,不能用 XPath,否则会导致报错。

以上是“Selenium抓不到内容的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Selenium抓不到内容的示例分析

本文链接: https://lsjlt.com/news/286854.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Selenium抓不到内容的示例分析
    这篇文章主要为大家展示了“Selenium抓不到内容的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Selenium抓不到内容的示例分析”这篇文章吧。有一些同学在写爬虫的时候,过于依赖 ...
    99+
    2023-06-17
  • Python +Selenium的示例分析
    本篇文章给大家分享的是有关Python +Selenium的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。下面,我们对比几大主流编程语言的代码量,以「Hello Wor...
    99+
    2023-06-05
  • python 抓网页内容分析
    用Python语言写搜索引擎蜘蛛的脚本非常简单、轻松。给大家分享两种抓网页内容的方法一、用urllib2/sgmllib包,将目标网页的所有URL列出。import urllib2from sgmllib import SGMLParser...
    99+
    2023-01-31
    网页 内容 python
  • html5组织内容的示例分析
    这篇文章主要为大家展示了“html5组织内容的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5组织内容的示例分析”这篇文章吧。默认情况下,HTM...
    99+
    2024-04-02
  • vue中slot内容分发的示例分析
    小编给大家分享一下vue中slot内容分发的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vue的内容分发非常适合“固定...
    99+
    2024-04-02
  • vue中slot分发内容的示例分析
    这篇文章主要为大家展示了“vue中slot分发内容的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中slot分发内容的示例分析”这篇文章吧。slot分发内容 (多个分发) ...
    99+
    2023-06-29
  • CSS3中内容溢出的示例分析
    这篇文章给大家分享的是有关CSS3中内容溢出的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CSS3内容溢出属性在CSS中的每一个元素都视为一个盒子,这个盒子就是一个容器...
    99+
    2024-04-02
  • 网站初上线内容更新内容的示例分析
    这篇文章给大家分享的是有关网站初上线内容更新内容的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  第一,网站编辑一定要具备分析和综合能力。姓氏文化对于笔者这样一个文化小白而言兼职就是两个字郁闷,我自己对...
    99+
    2023-06-10
  • Vue中内容分发<slot>​的示例分析
    这篇文章主要介绍Vue中内容分发<slot>的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先 Vue 实现了一套内容分发的 API,这套 API 是基于当前的...
    99+
    2024-04-02
  • IScroll中当内容不足时下拉刷新的示例分析
    小编给大家分享一下IScroll中当内容不足时下拉刷新的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!大致的例子是这样的...
    99+
    2024-04-02
  • Python中使用selenium库的示例分析
    这篇文章主要介绍Python中使用selenium库的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、selenium简介官网总的来说: selenium库主要用来做浏览器的自动化脚本库。二、seleniu...
    99+
    2023-06-15
  • selenium自动化测试的示例分析
    本篇文章为大家展示了selenium自动化测试的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下载驱动器http://chromedriver.storage.googleapis.com/...
    99+
    2023-06-26
  • linux中tcpdump抓取HTTP包的示例分析
    这篇文章将为大家详细讲解有关linux中tcpdump抓取HTTP包的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。tcpdumptcpdump是linux系统自带的抓包工具,主要通过命令行的方式...
    99+
    2023-06-10
  • Linux容器的示例分析
    这篇文章将为大家详细讲解有关Linux容器的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我告诉你一个秘密:使得我的应用程序进入到全世界的 DevOps 云计算之类的东西对我来说仍然有一点神秘。但...
    99+
    2023-06-16
  • node.js抓取并分析网页内容有无特殊内容的js文件
    nodejs获取网页内容绑定data事件,获取到的数据会分几次相应,如果想全局内容匹配,需要等待请求结束,在end结束事件里把累积起来的全局数据进行操作! 举个例子,比如要在页面中找有没有www.baid...
    99+
    2022-06-04
    内容 有无 网页
  • Html5中内容安全策略CSP的示例分析
    这篇文章主要为大家展示了“Html5中内容安全策略CSP的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Html5中内容安全策略CSP的示例分析”这篇文...
    99+
    2024-04-02
  • python selenium中Excel数据维护的示例分析
    小编给大家分享一下python selenium中Excel数据维护的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!我们来举一个从Excel中读取账号和密码的例子并调用:制作Excel我们要对以上输入的用...
    99+
    2023-06-29
  • Java内省的示例分析
    这篇文章主要介绍Java内省的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!下面我们就对内省做一下简单介绍:内省是java语言对bean类属性、事件的一种处理方法为什么要学内省开发框架时,经常需要使用java...
    99+
    2023-06-17
  • javascript兼容性的示例分析
    这篇文章主要为大家展示了“javascript兼容性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“javascript兼容性的示例分析”这篇文章吧。1...
    99+
    2024-04-02
  • js原生判断内容区域是否滚动到底部的示例分析
    小编给大家分享一下js原生判断内容区域是否滚动到底部的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!逻辑判断内容滚动到底需要知道的信息内容区域的真实高度(也就是滚动区域)滚动条距离...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作