【问题标题】:python lxml parsing htmlpython lxml解析html
【发布时间】:2012-06-10 11:06:04
【问题描述】:

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

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

表格由 6 列组成。 我只需要第五列。 是否有可能获取字典中的所有值(例如:{ column1 : values_of_clm1 ;column2 : values_of_clmn2; .....}) 以及如何获取?然后读取 dict 表格​​或您是否建议其他解决方案?

【问题讨论】:

    标签: python html-table html-parsing lxml


    【解决方案1】:

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

    [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))}
    

    【讨论】:

      【解决方案2】:

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

      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]
      

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

      【讨论】:

        【解决方案3】:

        这篇文章可能对您尝试做的事情有用:python, lxml and xpath - html table parsing

        然后要阅读您的字典,您可以选择不同的策略。 如果您确切知道键是什么,那么您可以直接通过键访问您的值: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 元素

        【讨论】:

        • 但是如何将单元格值附加到 dict.使用我的代码,我得到未分隔的值(例如 cellValue1Cellvalue2Cellvalue3 等)。我不知道如何拆分它们,然后将它们放入 dict 中。拆分它们是最大的问题。值的长度不同
        猜你喜欢
        • 1970-01-01
        • 2013-12-23
        • 2010-12-07
        • 1970-01-01
        • 2013-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-12
        相关资源
        最近更新 更多