假设您有一些用Selenium抓取的html源代码,并使用BeautifulSoup解析:
from selenium import webdriver
from bs4 import BeautifulSoup
driver = webdriver.Firefox()
driver.get(url)
soup = BeautifulSoup(driver.page_source)
有没有办法从html代码或汤对象中删除所有具有以下内容的元素:
1。)html标记源中的属性style=display:none
(即<div style = 'display:none'>...</div>
)
或
2。)在页面的CSS中有display:none
属性
答案 0 :(得分:4)
我想我记得处理过这样的网站 - IP地址是通过多个HTML元素在内部表示的,其中一些是通过display: none
样式隐藏的,有些有一个合适的CSS类使它们看不见。通过BeautifulSoup
从这个混乱中获取真正的IP地址非常困难。
好消息是selenium
实际上处理了这个用例,每当你得到.text
的{{1}}时,它都会返回一个元素的可见文本正是所需要的。
演示:
WebElement