コード例 #1
0
    def court(self,
              condition: Condition,
              district: str,
              start_court: str = None):
        """
        :param condition:
        :param district:
        :param start_court: start_court will only be available for level 2
        :return: Court name, court level, court indicator, count
        """
        level_count = {'高级法院': 0, '中级法院': 0, '基层法院': 0}
        condition = condition.district(district)
        info = self.tree_content(
            Parameter(param=str(condition), sess=self.sess))['法院层级']
        satisfy = True
        for item in info['ParamList']:
            if item['IntValue'] > 200:
                satisfy = False
            if item['Key'] in level_count:
                level_count[item['Key']] = item['IntValue']

        if satisfy:
            for k, v in level_count.items():
                if v > 0:
                    yield None, k, True, v

        else:
            start = start_court is None

            if start and level_count['高级法院'] > 0:
                yield None, 1, True, level_count['高级法院']
            middle = self.court_tree_content(condition,
                                             parval=district)['中级法院']
            for d in sorted(middle['ParamList'],
                            key=lambda item: item['IntValue'],
                            reverse=False):
                mid_court = d['Key']
                if not start:
                    if mid_court == start_court:
                        start = True
                if start:
                    if 0 < d['IntValue'] < 200:
                        yield mid_court, 2, False, d['IntValue']
                    else:
                        base = self.court_tree_content(
                            condition.court(mid_court, 2, False),
                            parval=mid_court)['基层法院']
                        if d['IntValue'] - base['IntValue'] > 0:
                            yield mid_court, 2, True, d['IntValue'] - base[
                                'IntValue']
                        for g in sorted(base['ParamList'],
                                        key=lambda item: item['IntValue'],
                                        reverse=False):
                            base_court = g['Key']
                            if g['IntValue'] > 0:
                                yield base_court, 3, False, g['IntValue']
コード例 #2
0
ファイル: test_unit.py プロジェクト: foreverhui/wenshu_spider
def test_court():
    from session import Session
    from condition import Condition
    from spider import Spider
    from parameter import Parameter
    from datetime import datetime
    s = Session()
    c = Condition().district('北京市')
    spider = Spider(sess=s)
    # print(spider.tree_content(param=Parameter(param=str(c), sess=s)))
    # print(spider.court_tree_content(condition=c, parval='北京市'))
    for i in spider.court(condition=c.date(start_date=datetime(2017, 5, 15),
                                           end_date=datetime(2017, 5, 16)),
                          district='广东省'):
        print(c.court(*i[0:3]), i[3])