当前位置: 首页 > 面试题库 >

过滤掉标记属性或其CSS中具有“ display:none”的HTML元素

裴心水
2023-03-14
问题内容

假设您有一些用Selenium抓取并用BeautifulSoup解析的html源:

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Firefox()
driver.get(url)
soup = BeautifulSoup(driver.page_source)

有没有一种方法可以从html代码或汤对象中删除所有具有以下内容的元素:

1.)style=display:nonehtml标记源中的属性(即<div style = 'display:none'>...</div>

要么

2.)display:none在页面的CSS中具有该属性


问题答案:

我想我记得曾经处理过这样的网站-IP地址是通过多个HTML元素在内部表示的,其中一些是通过display: none样式隐藏的,有些则具有使它们不可见的适当CSS类。从这个混乱中获得真正的IP地址BeautifulSoup是非常困难的。

好消息是,selenium实际上处理这种使用情况下,只要你得到.textWebElement-它会返回你一个
元素的可见文本 是需要的到底是什么。

演示:

In [1]: from selenium import webdriver

In [2]: driver = webdriver.Firefox()

In [3]: driver.get("http://proxylist.hidemyass.com/")

In [4]: for row in driver.find_elements_by_css_selector("section.proxy-results table#listable tr")[1:]: 
   ...:     cells = row.find_elements_by_tag_name("td")
   ...:     print(cells[1].text.strip())
   ...: 
101.26.38.162
120.198.236.10
213.85.92.10
...
216.161.239.51
212.200.111.198


 类似资料:
  • 我想点击div[@id='main_filter'],然后从下拉菜单中选择一个li元素。 我正在创建一个用于SelectFromDropDown的泛型方法。 我的解决方案:private IWebElement parentFilter=>Driver.FindElement(By.xpath(“//div[@id='main_filter'][1]/span”));

  • 问题内容: 因为正则表达式使我感到恐惧,所以我试图找到一种方法来删除所有HTML标记并从Python中的字符串解析HTML实体。 问题答案: 使用lxml是最适合python的xml / html库。 如果您只想清理html,请查看lxml.html.clean模块

  • 问题内容: 我有这个HTML代码: 但它应该变成(对于所有可能的html标签): 问题答案: 改编自我对类似问题的回答 RegExp细分: 添加一些引号,并使用替换文本,它应该删除标记名之后的所有文本,直到标记结尾或just 为止。 请注意, 这不一定适用于 所有 输入,因为Anti-HTML + RegExp会告诉您。有一些后备功能,最明显的是会失败,还有其他一些坏的问题…我建议将Zend_Fi

  • 问题内容: 我想知道以下两个代码段之间的区别是什么: 和 我确定当您使用特殊的JavaScript库时,它会执行某些操作,但是除此之外,它是否可以验证HTML或出于其他原因而需要? 问题答案: 该标签可让您单击标签,它会像点击相关的输入元素上进行处理。有两种创建此关联的方法: 一种方法是将label元素包装在input元素周围: 另一种方法是使用属性,为其提供关联输入的ID: 这对于与复选框和按钮

  • 从数组中移除 falsey 值元素。 使用 Array.filter() 过滤掉数组中所有 假值元素(false, null, 0, "", undefined, 和 NaN)。 const compact = arr => arr.filter(Boolean); compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34]); //

  • 问题内容: 我有以下几点: 在我的样式表中,我有: 这篇文章的样式,我对此感到高兴。现在,对于的 单个 实例,我想执行以下操作: 我已经定义了: 但是该类未设置背景色。似乎html标记的样式优先,无论样式表中CSS规则的顺序如何。 如何通过使用样式类覆盖样式化html标签的CSS属性?这是可能吗?还有其他选择吗? 问题答案: 那是CSS的特殊性问题。 具有比选择器更高的特异性值。 按价值计算: >