gpt4 book ai didi

python - 使用 bs4 进行网页抓取验证

转载 作者:太空宇宙 更新时间:2023-11-03 14:29:03 24 4
gpt4 key购买 nike

不知道为什么,但今天这段代码没有按预期工作(我在其他时候对不同的 html 使用了相同的代码,并且工作得非常顺利)。我试图找出文本“Anular”是否在 HTML 代码中。但当文本在那里可见时,它总是显示为“否”。

代码是:

    from bs4 import BeautifulSoup
import re
html = browser.page_source
soup = BeautifulSoup(html, "html.parser")
if soup.findAll(text = re.compile('Anular')):
registo2 = "Yes"
else:
registo2 = "No"

Html 是(其中一部分):

</td>
</tr></tbody></table>
<span class="filter" style="display: block; width: 100%; position: absolute; top:17px;" id="Almoço">
<form action="" method="post" name="itens" id="item_frm">
<input type="hidden" name="item" value="30" /><span style="top: 70px;" class="item_check2">Marcada</span><br /><div style="display:none;z-index:1000;position:fixed;" class="divBlockClass" id="divBlock7172"></div><br /><div style="z-index:10001;" id="msgbox_ref_7172" class="msgbox_ref"><span id="msg_ref_7172"></span><br /><br /><input type="submit" onclick="
document.getElementById('msgbox_ref_7172').style.visibility='hidden'" onmouseout="this.className='input_off'" onmouseover="this.className='input_on'" name="SetData" class="input_off" id="btn_marcar" value=" OK " />
<input type="button" onclick="document.getElementById('msgbox_ref_7172').style.visibility='hidden';document.getElementById('divBlock7172').style.display='none'" onmouseout="this.className='input_off'" onmouseover="this.className='input_on'" class="input_off" value="Cancelar" />
</div><br /><span class="itemref_btn">
<input type="button" "="" onclick="document.getElementById('marcada').value='true';document.getElementById('divBlock7172').style.display='block'; document.getElementById('msgbox_ref_7172').style.visibility='visible';
document.getElementById('msgbox_ref_7172').style.top=event.pageY+'px';
document.getElementById('msg_ref_7172').innerHTML='Tem a certeza que deseja anular?';" onmouseout="this.className='input_off'" onmouseover="this.className='input_on'" style="cursor: pointer; width: 112px;" value="Anular Refeição" class="input_off" id="btn_anular_7172" /></span><table cellspacing="0" cellpadding="0" border="0" width="95%;" id="conteudoTabela">

知道为什么不起作用吗?正则表达式中有哪些可以改进的地方? 谢谢。

最佳答案

在您提供的 html 中,您要查找的字符串包含在标记的“value”属性中。
所以你的代码将是:

if soup.find_all(value=re.compile('Anular')):
registo2 = "Yes"
else:
registo2 = "No"

或者,如果您想检查文本或属性中的字符串,您可以使用 functionfind_all中。

def f(tag):
return 'Anular' in tag.get('value', '') or 'Anular' in (tag.string or '')

registo2 = "Yes" if soup.find_all(f) else "No"

关于python - 使用 bs4 进行网页抓取验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47435631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com