gpt4 book ai didi

python - 关于如何使用 lxml 从 html 输出解析数据的简单示例

转载 作者:搜寻专家 更新时间:2023-10-31 23:09:25 25 4
gpt4 key购买 nike

我正在将一些使用正则表达式从 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>

提前致谢。

最佳答案

使用您作为 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)

产量

('Working Dir', '/serves/test_servers')
('Java Data Model', '64-bit')

这一行完成了大部分工作:

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

它使用 xpath()搜索所有<td>的方法标签。它使用 text_content()提取关联文本的方法。

zip(*[tds]*2)grouper idiom遍历 tds成对:

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

请注意,这假设 <td>标签和值交替出现。

关于python - 关于如何使用 lxml 从 html 输出解析数据的简单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11795077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com