为了账号安全,请及时绑定邮箱和手机立即绑定

试图仅打印出“状态失败”但 Python 正在打印所有内容

试图仅打印出“状态失败”但 Python 正在打印所有内容

摇曳的蔷薇 2021-09-25 09:59:48
我正在循环浏览网页的 HTML 内容并尝试仅打印带有子字符串“状态失败”的字符串。然而,Python 正在打印每一个字符串,即使是那些没有子字符串“状态失败”的字符串。这是我的代码:soup = bs(html_page, 'lxml')outF = open('C:/Users/ryans/OneDrive/Desktop/test.csv', 'w')for link in soup.findAll('rect'):    if "state failed" in link:        if link.isoweekday() in range(1, 6):            outF.write(str(link))            outF.write('\n')   outF.close()这是我希望打印的一个,它是。<rect class="state failed" data-original-title="Task_id: failure_cleanup&lt;br&gt;Run: 2018-12-22T04:00:00&lt;br&gt;Operator: CruxCleanupOperator&lt;br&gt;Started: 2018-12-24T18:34:39.149434&lt;br&gt;Ended: 2018-12-24T18:34:45.935977&lt;br&gt;Duration: 6.78654&lt;br&gt;State: failed&lt;br&gt;" data-toggle="tooltip" height="10" rx="0" ry="0" style="shape-rendering: crispedges; stroke-width: 1; stroke-opacity: 1;" title="" width="10" x="984" y="-5"></rect>这是我希望不会被打印的一个,但出于某种奇怪的原因正在打印它。<rect class="state success" data-original-title="Task_id: join_cleanup&lt;br&gt;Run: 2018-12-22T04:00:00&lt;br&gt;Operator: CompletionBranchOperator&lt;br&gt;Started: 2018-12-24T18:33:30.834983&lt;br&gt;Ended: 2018-12-24T18:33:33.037330&lt;br&gt;Duration: 2.20235&lt;br&gt;State: success&lt;br&gt;" data-toggle="tooltip" height="10" rx="0" ry="0" style="shape-rendering: crispedges; stroke-width: 1; stroke-opacity: 1;" title="" width="10" x="984" y="-5"></rect>我用单引号、双引号甚至三引号将所有组合绑定在一起。没关系。它打印所有内容,甚至是不包含“状态失败”的字符串。知道这里有什么问题吗?谢谢。
查看完整描述

3 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

而不是if "state failed" in link:,将其替换为if "state failed" is link.get('class')或if "state failed" == link.get('class')。我想你最好一起去is,因为你可能得到None的link.get('class')是class属性是不存在的。


你也可以这样做:


soup = bs(html_page, 'lxml')

outF = open('C:/Users/ryans/OneDrive/Desktop/test.csv', 'w')

for link in soup.findAll('rect', attrs={'class': 'state failed'}):

    if link.isoweekday() in range(1, 6):

        outF.write(str(link))

        outF.write('\n')   

outF.close()


查看完整回答
反对 回复 2021-09-25
?
慕斯王

TA贡献1864条经验 获得超2个赞

也许你可以尝试把它link变成一个字符串:


soup = bs(html_page, 'lxml')

outF = open('C:/Users/ryans/OneDrive/Desktop/test.csv', 'w')

for link in soup.findAll('rect'):

    if "state failed" in str(link):

        if link.isoweekday() in range(1, 6):

            outF.write(str(link))

            outF.write('\n')   

outF.close()

那么它应该工作。


查看完整回答
反对 回复 2021-09-25
  • 3 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号