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

我正在循环浏览网页的 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>

我用单引号、双引号甚至三引号将所有组合绑定在一起。没关系。它打印所有内容,甚至是不包含“状态失败”的字符串。知道这里有什么问题吗?谢谢。


摇曳的蔷薇
浏览 192回答 3
3回答

隔江千里

而不是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'}):&nbsp; &nbsp; if link.isoweekday() in range(1, 6):&nbsp; &nbsp; &nbsp; &nbsp; outF.write(str(link))&nbsp; &nbsp; &nbsp; &nbsp; outF.write('\n')&nbsp; &nbsp;outF.close()

慕斯王

也许你可以尝试把它link变成一个字符串:soup = bs(html_page, 'lxml')outF = open('C:/Users/ryans/OneDrive/Desktop/test.csv', 'w')for link in soup.findAll('rect'):&nbsp; &nbsp; if "state failed" in str(link):&nbsp; &nbsp; &nbsp; &nbsp; if link.isoweekday() in range(1, 6):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outF.write(str(link))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outF.write('\n')&nbsp; &nbsp;outF.close()那么它应该工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python