怎样用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个回答

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

 #!/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)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐