使用正则表达式(Python)获取和解析特定的HTML块

时间:2016-02-04 16:28:48

标签: python html regex parsing html-parsing

我试图在不使用任何外部模块的情况下使用Python解析html文件。原因是我正在触发jenkins工作并遇到lxml和BeautifulSoup的一些导入问题(尝试解决它并且我认为 某个地方,我正在做工程以完成我的工作)

输入

    <tr class="test">
    <td class="test">
      <a href="a.html">BA</a>
    </td>
    <td class="duration">
      0.000s
    </td>

        <td class="zero number">0</td>

        <td class="zero number">0</td>

        <td class="zero number">0</td>

    <td class="passRate">
            N/A
          </td>
  </tr>

  <tr class="test">
    <td class="test">
      <a href="o.html">Aa</a>
    </td>
    <td class="duration">
      0.000s
    </td>

        <td class="zero number">0</td>

        <td class="zero number">0</td>

        <td class="zero number">0</td>

    <td class="passRate">
            N/A
          </td>
  </tr>

  <tr class="test">
    <td class="test">
      <a href="g.html">GG</a>
    </td>
    <td class="duration">
      0.390s
    </td>

        <td class="zero number">0</td>

        <td class="zero number">0</td>

        <td class="zero number">0</td>

    <td class="passRate">
            N/A
          </td>
  </tr>

  <tr class="suite">
    <td colspan="2" class="totalLabel">Total</td>

        <td class="zero number">271</td>

        <td class="zero number">0</td>

        <td class="fail number">3</td>

        <td class="zero number">4</td>


    <td class="passRate suite">
            98%
          </td>

  </tr>

输出

我想把特定的tr标签块与类#34;套件&#34; (在最后检查)然后拉出所有td标签的值并分配。

~~~~~~~~~~~~~~~~~~~~~~~~~~

Eg. The output will be: 
271
   0
     3
       4
         98%

最后我想将这些值分配给变量...所以我的最终输出将是:     A = 271     B = 0     C = 3     D = 4     D = 98%

(新行中的所有变量)

~~~~~~~~~~~~~~~~~~~~~~~~~~ 这是我尝试使用lxml:

tree = parse(HTML_FILE)
tds = tree.xpath("//tr[@class='suite']//td/text()")
val = map(str.strip, tds)

这在本地运行,但我真的想做一些没有任何外部依赖的事情。我应该使用strip()或使用os.path.isFile()打开一个文件。我可能不正确,但建议/告诉我解决这个问题的方法。

**我能想到的最困难的部分是&#34;在我输入的最后一个tr标签块中,几个sub td标签有class = 0 number&#34;所以你怎么解决它。

**我能想到的方法是取出那个块,然后删除除内容之外的所有标签,然后逐行分配。但是,我不擅长正则表达式。

这不是Parse HTML file using Python without external module的重复...这是一个不同的输入和不同的输出预期问题。

0 个答案:

没有答案