g1oodboy 2017-11-14 10:44 采纳率: 87.5%
浏览 4997
已采纳

怎样用python遍历表格中的内容

建设单位 项目名称 发文号 立案号 详情
中铁十六局集团有限公司 关于中铁十六局集团有限公司朝阳区青年路10号院项目2#住宅楼建设工程规划许可证延期的申请 2017规(朝)延字0001号 2017分延字0001 详情
北京博达顺源天然气有限公司 压缩天然气(CNG)加气母站 2017规函复市政字0002号 2017函市政字0001 详情
北京市平谷区教育委员会 北京市平谷区大华山镇大华山村经济合作社 教学楼、风雨操场及食堂 2017规(平)乡临建字0001号 2017分乡建字0001 详情
李甫全 翻改建住房(灰瓦1) 2017规(西)条居字0001号 2017分条居字0001 详情
北京市花木有限公司 上水工程 2017规建市政否字0025号 2017市政建字0001 详情
北京地铁十六号线投资有限责任公司 北京地铁十六号线工程 区间工程 月坛南街站、阜外大街~月坛南街区间 2017规延市政字0004号 2017延市政字0001 详情
北京恒城投资发展集团有限公司 人才公租房项目 2017分复字0001 详情
北京房地集团有限公司 和平街十四区简易住宅楼改造项目 2017规(朝)选字0002号 2017分选字0001 详情
北京市环亚创业生物工程技术有限责任公司 工业用房 2017分监字0001 详情
北京公共交通控股(集团)有限公司 2017规竣市政字0001号 2017监市政字0001 详情
  • 写回答

1条回答 默认 最新

  • 一直在路上的十安 2017-11-15 01:56
    关注

    这是之前写的一个很简单的解析表格的,就是利用普通的遍历。

     #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    """
    @Time    : 4/10/17
    @File    : normalForm.py
    @Remark  : 普通表解析
    """
    
    class normalForm(object):
        """
        :param: response
        """
    
        def __init__(self):
            self.item_dict = {
                u"建设单位": "construction_unit",
                u"项目名称": "project_name",
                u"发文号": "issued_number",
                u"立案号": "case_number",
            }
    
        def parser_item(self, response, table_xpath):
            # 第一行为表头时,匹配表头从第二行开始
            tr_first = 2
            items_list = list()
            trs = response.xpath("{}//tr".format(table_xpath)).extract()
            for r in xrange(tr_first, len(trs) + 1):
                items = list()
                tds = response.xpath("{}//tr[{}]//td".format(table_xpath, r)).extract()
                for d in xrange(1, len(tds) + 1):
                    shi_key = ''.join(response.xpath("{}//tr[{}]//td[{}]//text()".format(table_xpath, tr_first - 1, d)).extract()).replace(u'\xa0', '').replace(u'\r', '').replace(u'\t', '').replace(u'\n', '').replace(u' ', '')
                    shi_value = ''.join(response.xpath("{}//tr[{}]//td[{}]//text()".format(table_xpath, r, d)).extract()).replace(u'\xa0', '').replace(u'\r', '').replace(u'\t', '').replace(u'\n', '').replace(u' ', '')
                    if shi_key in self.item_dict and shi_value != '':
                        # print shi_key, '^^^^^^', shi_value
                        items.append({self.item_dict[shi_key]: shi_value})
                if len(items) > 0:
                    items_list.append(items)
            return items_list
    
    if __name__ == '__main__':
        pass
        # response = xxx  # 此处xxx为你的网页response
        # table_xpath = "/table"
        # normalForm().parser_item(response, table_xpath)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题