1

我正在尝试解析 html 文档。它包含几个表。我能够找到正确的表并从中获取数据

for cell in doc.xpath('//table[@class="CE_13"]')[0]:
    for a in cell:
        print a.text_content()

表由 6 列组成。我只需要第五列。是否可以在 dict 中获取所有值(例如:{ column1 : values_of_clm1 ;column2 : values_of_clmn2; .....})以及如何?然后读取 dict 形式,或者您是否提出不同的解决方案?

4

3 回答 3

6

这篇文章可能对您尝试做的事情有用:python、lxml 和 xpath - html 表解析

然后阅读你的字典,你可以选择不同的策略。如果您确切知道键是什么,那么您可以直接通过键访问您的值,如下所示:my_dict['a_key_string']

否则,您可以像这样遍历您的字典:

for key,val in my_dict.items():
   do_stuff(key,val)

编辑

获取所有第 5 个td元素:

tds = root.xpath("//table//td[position()=5]")

遍历td元素:

for td in tds:
    print "tag %s" % td.tag
    print "inner %s" % td.text

基本上你在这里不需要字典,因为你只能直接获取组成你的第 5 个表格列的 td 元素

于 2012-06-06T12:26:05.430 回答
0

我通过使用以下代码解决了我的问题:

en_array = []
for cell in doc.xpath('//table[@class="CE_13"]')[0]:
    for a in cell:
        en_array.append(a.text_content())

print en_array
#Print the 6th column of table
for a,element in enumerate(en_array):
    if a % 9 == 5:
        print en_array[a]

如果有人有更好的解决方案,请告诉我。谢谢你

于 2012-06-06T12:50:11.967 回答
0

如果您只需要单元格内容列表,您可以使用:

[c.text for c in doc.xpath('//table[@class="CE_13"][1]//tr/td[5]')]

如果您确实需要任意字典键并使用 Python2.7:

l = doc.xpath('//table[@class="CE_13"][1]//tr/td[5]')
{'column%d' % (i+1): l[i].text for i in range(0,len(l))}
于 2012-06-06T14:38:09.963 回答