我正在构建一个网页的爬网,并遇到了一个页面,上面有以下未播放的标签。
<div style="display:none; padding:3px 10px 5px;text-align:center;" id="dialogCookieInfo" title="taiwan high-speed rail" wicket:message="title=bookingdialog_3">
<div class="JCon">
<div class="TCon">
<div class="overDiffText">
<div style="text-align: left;">
<span> for better user experiences, bla bla <a target="_blank" class="c" style="color:#FF9900;" href="https://www.thsrc.com.tw/tw/Article/ArticleContent/d1fa3bcb-a016-47e2-88c6-7b7cbed00ed5?tabIndex=1">privacy protection</a>。</span>
</div>
</div>
<div class="action">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td>
<input hidefocus="" name="confirm" id="btn-confirm" type="button" class="button_main" value="我同意"/>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
像往常一样,此标签应显示在渲染中,实际上将显示在所有其他标签的前面。实际上,它遮盖了所有其他标签以确认或取消答案。问题在于,BeautifulSoup在我程序的查询中没有返回此标签。Beautifulsoup只是说这个标签是"显示:无"的风格,并且没有透露该标签的其他属性及其孩子。但是我需要此标签来检查它是否遮盖了所有其他标签。
谁能帮我回答以下问题?
- 如何获得具有"显示:无"样式的标签?
- 是否有更好的方法来获取这些标签在渲染后动态遮蔽所有其他标签的标签?
- 如果此标签遮蔽了所有其他标签,我询问是否启用了其他标签,WebDriver会给出哪些响应?
真的很感谢所有的回应。
不确定这是否完全需要您需要,但希望他至少能使您朝着正确的方向前进。但是,您可以迭代<div>
标签,并检查其是否具有"样式"属性。如果它具有"样式"属性,则可以检查是否有"显示:无"。当这些是真的,您可以使用这些标签需要做任何事情。
html = '''<div style="display:none; padding:3px 10px 5px;text-align:center;" id="dialogCookieInfo" title="taiwan high-speed rail" wicket:message="title=bookingdialog_3">
<div class="JCon">
<div class="TCon">
<div class="overDiffText">
<div style="text-align: left;">
<span> for better user experiences, bla bla <a target="_blank" class="c" style="color:#FF9900;" href="https://www.thsrc.com.tw/tw/Article/ArticleContent/d1fa3bcb-a016-47e2-88c6-7b7cbed00ed5?tabIndex=1">privacy protection</a>。</span>
</div>
</div>
<div class="action">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td>
<input hidefocus="" name="confirm" id="btn-confirm" type="button" class="button_main" value="我同意"/>
</td>
</tr>
</table>
</div>
</div>
</div>
</div>'''
import bs4
soup = bs4.BeautifulSoup(html, 'html.parser')
div_display = soup.find_all('div')
for ele in div_display:
try:
ele['style']
if 'display:none' in ele['style']:
print ('Found "diplay:none"')
# Do some stuff with this element
else:
print ('Did not find "diplay:none"')
except:
print ('Element did not have "style" attribute')
输出:
Found "diplay:none"
Element did not have "style" attribute
Element did not have "style" attribute
Element did not have "style" attribute
Did not find "diplay:none"
Element did not have "style" attribute