如何使用lxml解析html输出中的数据的简单示例

2024-10-06 08:36:27 发布

您现在位置:Python中文网/ 问答频道 /正文

Im将一些使用regex从html输出中提取内容的python脚本转换为libxml2,但是由于我是从这开始的,所以需要一些帮助。在

如何使用lxml从下面示例的“工作目录”、“包/更新”和“Java数据模型”中提取值?在

<tr>
  <script>writeTD("row");</script>
  <td class="oddrow"><nobr>Working Dir</nobr></td>
  <script>writeTD("rowdata-l");</script>
  <td class="oddrowdata-l">/serves/test_servers</td>
</tr> 
<script>swapRows();</script>
<tr>
  <script>writeTD("row");</script>
  <td class="evenrow"><nobr>Packages/Updates</nobr></td>
  <script>writeTD("rowdata-l");</script>
  <td class="evenrowdata-l"><a href="updates.dsp">View</a></td>
</tr> 
<script>swapRows();</script>
<tr>
  <script>writeTD("row");</script>
  <td class="oddrow"><nobr>Java Data Model</nobr></td>
  <script>writeTD("rowdata-l");</script>
  <td class="oddrowdata-l">64-bit</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>

提前谢谢。在


Tags: tablescriptjavatrclasstdrowim
1条回答
网友
1楼 · 发布于 2024-10-06 08:36:27

使用您发布为content的HTML

import lxml.html as LH
doc = LH.fromstring(content)
tds = (td.text_content() for td in doc.xpath('//td'))    
for td, val in zip(*[tds]*2):
    if td in ("Working Dir", "Java Data Model"):
        print(td,val)

收益率

^{pr2}$

这条线完成了大部分工作:

tds = (td.text_content() for td in doc.xpath('//td'))

它使用xpath()方法搜索所有<td>标记。它使用text_content()方法提取相关文本。在

zip(*[tds]*2)是成对迭代tds的{a1}:

for td, val in zip(*[tds]*2):
    print(td,val)

注意,这假设<td>标签和值交替跟随。在

相关问题 更多 >