我试图使用beautifulSoup废弃网页,然后构建一个从表中获取一些信息的代码。 这是我正在处理的代码,但我对if条件有疑问:
p=soup_tab.find_all('tr')
j=0
for i in p:
soup_tr = BeautifulSoup(str(i) ,'html.parser')
if(soup_tr.find('span',
{"id":"ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl"+str(j)+
"_reference"})):
print("enter if 1 =======================")
cons_intitule_ref= (soup_tr.find('span',
{"id":"ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl"+str(j)+
"_reference"})).get_text()
resultat.append(cons_intitule_ref)
我的代码中的问题是在if条件下,而执行程序时没有打印("输入如果1 ========")。 并且我确定我正在搜索的标签是正确的,我认为确切的问题是条件(如果);
任何帮助,请我坚持这个问题几个小时,但仍然 谢谢你提前
答案 0 :(得分:0)
主要问题我看到:您正在j=0
开始循环0
,它应该从1
开始按顺序打印您想要的结果。
如果这是您的html(实际页面的精简版),并且您尝试获取与此标记相关联的文字:
html = '''<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl1_reference">01/AMI/RDOE/2017</span>
<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl2_reference">01/ct/2017</span>
<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl3_reference">108/2017/CNSS</span>
<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl4_reference">1/2017</span>
<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl5_reference">09/2017/CZC</span>
<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl6_reference">65/2017/TGR</span>
<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl7_reference">20/2017/DMSPK</span>
<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl8_reference">05/INDH/2017</span>
<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl9_reference">13/CS/2017</span>
<span class="ref" id="ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl10_reference">158/2017/RRA</span>'''
你应该像这样使用正则表达式:
import re
soup = BeautifulSoup(html, 'lxml')
for item in soup.findAll('span', {"id": re.compile(
"ctl0_CONTENU_PAGE_resultSearch_tableauResultSearch_ctl\d+_reference")}):
item.get_text()
返回:
'01/AMI/RDOE/2017'
'01/ct/2017'
'108/2017/CNSS'
'1/2017'
'09/2017/CZC'
'65/2017/TGR'
'20/2017/DMSPK'
'05/INDH/2017'
'13/CS/2017'
'158/2017/RRA'