簡體   English   中英

嘗試僅打印“狀態失敗”,但Python正在打印所有內容

[英]Trying to print out only “state failed” but Python is printing everything

我正在瀏覽網頁的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>

我將所有組合都用單引號,雙引號甚至三引號捆綁在一起。 沒關系。 它會打印所有內容,甚至不包含“狀態失敗”的字符串。 知道這里有什么問題嗎? 謝謝。

也許您可以嘗試將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()

然后它應該工作。

而不是if "state failed" in link: ,則將其替換為if "state failed" is link.get('class')if "state failed" == link.get('class') 我認為您最好使用is ,因為您可能會因為link.get('class')沒有class屬性而得到None

您也可以這樣操作:

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()

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM