如何在机器人框架中解析HTML

时间:2014-02-26 10:49:49

标签: python html parsing robotframework

以下是我的文字,它存储在${Tooltipdata}

    <hr><b><strong>Task Details</strong></b><hr><b>Date Created: </b> 02/21/2014 07:52pm<br> 
<b>Date Modified: </b> 02/24/2014 05:47pm<br><b>Assigned to: </b> Administrator<br>
<b>Created By: </b> Administrator<br><b>Status: </b> Pending Input<br><b>Description:
 </b> test<br>

我希望得到这样的结果:

Task Details  Date Created:  02/21/2014 07:52pm    Date Modified:  02/24/2014 05:47pm    Assigned to:  Administrator   
 Created By:  Administrator   
 Status:  Pending Input   
 Description:  test.

简单我想删除HTML标记。

3 个答案:

答案 0 :(得分:1)

您可以使用Evaluate关键字来运行python re.sub命令。这样的事情应该有效:

*** Keywords ***
| Remove HTML tags
| | [Documentation] | Strip HTML tags from the given string
| | [Arguments]     | ${string}
| | ${result}=      | Evaluate | re.sub(r'<.*?>', '', '''${string}''') | re
| | [Return]        | ${result}

*** Test cases ***
| Example
| | ${Tooltipdata}= | Some keyword which returns the tooltip data
| | ${string}= | Remove HTML tags | ${Tooltipdata}

如果您不熟悉正则表达式,则上述表达式表示“匹配&lt;和&gt;”之间的最短字符串,re.sub命令将用空字符串替换每个匹配项。< / p>

如果您的html标记包含其中包含>的属性,则会失败,如果您的数据同时包含&lt;

更好的选择是在python中编写关键字,并使用真正的HTML解析库(如Beautiful Soup)来解析数据。有关代码示例,请参阅this question

答案 1 :(得分:0)

您可以尝试使用正则表达式:

import re

data = "<hr><b><strong>Task Details</strong></b><hr><b>Date Created: </b> 02/21/2014 7:52pm<br><b>Date Modified: </b> 02/24/2014 05:47pm<br><b>Assigned to: </b> Administrator<br><b>Created By: </b> Administrator<br><b>Status: </b> Pending Input<br><b>Description: </b> test<br>"
# get text without tag
result = re.split(r'<[A-z\/]*>', data)

# print with removed tag
print ''.join(result)

答案 2 :(得分:0)

通过使用String Library,我们可以替换String。这是我用于替换字符串的代码。

${str} =    Replace String    ${Tooltipdata}    <hr>    a