Exemple #1
0
 def parse_car(self, response):
     print(response)
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url, callback=self.parse_car, errback=self.error_parse)
     # base infor
     # count
     self.counts += 1
     logging.log(msg="download              " + str(self.counts) + "                  items", level=logging.INFO)
     # dffile
     dffile(self.fa, response.url, self.tag)
     # base infor
     datasave1 = 'zero'
     # key and status (sold or sale, price,time)
     status = response.xpath('//div[@class="ask-box"]/a')
     status = "sale" if status else "sold"
     price = response.xpath('//span[@class="car-price"]/text()')
     price = ".".join(price.re('\d+')) if price else "zero"
     datetime = response.xpath('//label[@class="message"]/text()')
     datetime = "-".join(datetime.re('\d+')) if datetime else "zero"
     # item loader
     item = GanjiItem()
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
     item['website'] = website
     item['status'] = response.url + "-" + str(price) + "-" + str(status) + "-" + datetime
     item['pagetime'] = datetime
     item['datasave'] = [datasave1, response.xpath('//html').extract_first()]
     yield item
Exemple #2
0
 def parse_car(self, response):
     if response.status == 200:
         #base infor
         # count
         self.counts += 1
         #logging.log(msg="download              " + str(self.counts) + "                  items", level=logging.INFO)
         # dffile
         dffile(self.fa, response.url, self.tag)
         # datasave
         if response.meta.has_key('datasave1'):
             datasave1 = response.meta['datasave1']
         else:
             datasave1 = 'zero'
         #key and status (sold or sale, price,time)
         status = "sold"
         price = response.xpath('//strong[@class="s-orange"]/text()')
         price = ".".join(price.re('\d+')) if price else "zero"
         datetime = "zero"
         #item loader
         item = GanjiItem()
         item['url'] = response.url
         item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
         item['website'] = website
         item['status'] = response.url + "-" + str(price) + "-" + str(
             status) + "-" + str(datetime)
         item['pagetime'] = datetime
         item['datasave'] = [
             datasave1, response.xpath('//html').extract_first()
         ]
         yield item
Exemple #3
0
    def parse_car(self, response):
        # requests count
        if self.tag == 'update':
            addcounts = self.request_next()
            if addcounts:
                self.size = min(self.size, self.carnum - self.reqcounts)
                for i in range(self.reqcounts, self.reqcounts + self.size):
                    url = self.urllist[i]
                    if url:
                        yield scrapy.Request(url,
                                             callback=self.parse_car,
                                             errback=self.error_parse)

        if response.status == 200:
            # count
            self.counts += 1
            logging.log(msg="download              " + str(self.counts) +
                        "                  items",
                        level=logging.INFO)
            # dffile
            dffile(self.fa, response.url, self.tag)
            # datasave baseinfo
            if response.meta.has_key('datasave1'):
                datasave1 = response.meta['datasave1']
            else:
                datasave1 = 'zero'
            # key and status (sold or sale, price,time)
            #未找到状态
            # status = response.xpath('//div[@class="right-sold"]')
            # if status:
            #     status = "sold"
            #     price = response.xpath(u'//p[contains(text(),'价格')]/b/text()')
            # else:
            status = "sale"
            price = response.xpath(
                '//div[@class="carIn"]/p/em/text()').extract_first()
            price = str(price) if price else "zero"
            datetime = "zero"
            # item loader
            item = GanjiItem()
            item['url'] = response.url
            item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
            item['website'] = website
            item['status'] = response.url + "-" + str(price) + "-" + str(
                status) + "-" + datetime
            item['pagetime'] = datetime
            item['datasave'] = [
                datasave1, response.xpath('//html').extract_first()
            ]
            # with open("C:\Users\Admin\Desktop\hb\hb.text", 'a') as f:
            #     print('********************************************')
            #     json.dump({"url":response.url,
            #                'grabtime':time.strftime('%Y-%m-%d %X', time.localtime()),
            #                'website':website,
            #                'status':response.url + "-" + str(price) + "-" + str(status) + "-" + datetime,
            #                'pagetime':datetime
            #                },
            #               f)
            #     f.write("\n")
            yield item
Exemple #4
0
 def parse(self, response):
     item = che300_price()
     item = dict(item, **response.meta['datainfo'])
     item['url'] = response.url
     if response.xpath('//p/text()').re('success'):
         # dffile
         dffile(self.fa, response.url, self.tag)
         data = json.loads(response.xpath(
             '//p/text()').extract_first())['success']['evalResult']
         #"dealer_price": 20.8, B2C ,price6
         # "individual_price": 20.26, C2C, price4
         # "help_sold_price": 20.2,
         # "dealer_buy_price": 19.32,C2B,price2
         # "dealer_auction_price": 19.61,
         # "dealer_low_buy_price": 18.62,C2B_min,price1
         # "dealer_low_auction_price": 19.46,
         # "individual_low_sold_price": 19.9,C2C_C2B,price3
         # "dealer_low_sold_price": 20.4,B2C_C2C,price5
         # "dealer_high_sold_price": 21.84,B2C_max,price7
         # "low_help_sold_price": 20.17
         item = dict(item, **data)
         item['status'] = md5(".".join(str(item.values()))).hexdigest()
         item['grabtime'] = time.strftime('%Y-%m-%d %H:%M:%S',
                                          time.localtime())
         yield item
Exemple #5
0
 def parse(self, response):
     item = che300_price()
     item = dict(item, **response.meta['datainfo'])
     item['url'] = response.url
     if response.xpath('//p/text()').re('\{\"success.*\}\]\}'):
         # dffile
         dffile(self.fa, response.url, self.tag)
         data = json.loads(
             response.xpath('//p/text()').re('\{\"success.*\}\]\}')
             [0])['success']
         item['price1'] = data[0]['price']
         item['price2'] = data[1]['price']
         item['price3'] = data[2]['price']
         item['price4'] = data[3]['price']
         item['price5'] = data[4]['price']
         item['price6'] = data[5]['price']
         item['price7'] = data[6]['price']
         item['saleRate1'] = data[0]['saleRate']
         item['saleRate2'] = data[1]['saleRate']
         item['saleRate3'] = data[2]['saleRate']
         item['saleRate4'] = data[3]['saleRate']
         item['saleRate5'] = data[4]['saleRate']
         item['saleRate6'] = data[5]['saleRate']
         item['saleRate7'] = data[6]['saleRate']
         item['saleDateRange1'] = data[0]['saleDateRange']
         item['saleDateRange2'] = data[1]['saleDateRange']
         item['saleDateRange3'] = data[2]['saleDateRange']
         item['saleDateRange4'] = data[3]['saleDateRange']
         item['saleDateRange5'] = data[4]['saleDateRange']
         item['saleDateRange6'] = data[5]['saleDateRange']
         item['saleDateRange7'] = data[6]['saleDateRange']
         item['status'] = md5(".".join(str(item.values()))).hexdigest()
         item['grabtime'] = time.strftime('%Y-%m-%d %H:%M:%S',
                                          time.localtime())
         yield item
 def parse_allprov(self, response):
     item = che300_price()
     item = dict(item, **response.meta['datainfo'])
     dffile(self.fa, response.url, self.tag)
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
     item['status'] = md5(response.url + "-" + update_code).hexdigest()
     item['datasave'] = response.xpath('//p/text()').extract_first()
     yield item
Exemple #7
0
    def parse_car(self, response):
        # requests count
        if self.tag == 'update':
            addcounts = self.request_next()
            if addcounts:
                self.size = min(self.size, self.carnum - self.reqcounts)
                for i in range(self.reqcounts, self.reqcounts + self.size):
                    url = self.urllist[i]
                    if url:
                        yield scrapy.Request(url,
                                             callback=self.parse_car,
                                             errback=self.error_parse)

        if response.status == 200:
            # base infor
            # count
            self.counts += 1
            logging.log(msg="download              " + str(self.counts) +
                        "                  items",
                        level=logging.INFO)
            # dffile
            dffile(self.fa, response.url, self.tag)
            # datasave
            if response.meta.has_key('datasave1'):
                datasave1 = response.meta['datasave1']
            else:
                datasave1 = 'zero'
            #key and status (sold or sale, price,time)
            status = response.xpath('//ins[@class="detail-no hook-work-off"]')
            if status:
                status = "sold"
            else:
                status = "sale"
            price = ".".join(
                response.xpath(
                    '//div[@class="detail_price_left clearfix"]/em/text()').re(
                        '\d+'))
            price = price if price else "zero"
            pagetime = response.xpath(
                '//div[@class="push-time"]/text()').extract_first()
            pagetime = pagetime[:-2] if pagetime else "zero"
            #item loader
            item = GanjiItem()
            item['url'] = response.url
            item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
            item['website'] = website
            item['status'] = response.url + "-" + str(price) + "-" + str(
                status) + "-" + md5(pagetime.encode("utf-8")).hexdigest()
            item['pagetime'] = pagetime
            item['datasave'] = [
                datasave1, response.xpath('//html').extract_first()
            ]
            yield item
Exemple #8
0
 def parse_car(self, response):
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url,
                                          callback=self.parse_car,
                                          errback=self.error_parse)
     #status check
     if response.status == 200 and len(
             response.xpath('//html').extract_first()) >= 8000:
         # count
         self.counts += 1
         logging.log(msg="download              " + str(self.counts) +
                     "                  items",
                     level=logging.INFO)
         # dffile
         dffile(self.fa, response.url, self.tag)
         #key and status (sold or sale, price,time)
         status = response.xpath(
             '//span[@class="be-scheduled" or @class="tag tag-sale"]')
         print(status)
         if status:
             status = 'sold'
         else:
             status = 'sale'
         price = ".".join(
             response.xpath('//div[@class="car-price"]/ins/text()').re(
                 '\d+'))
         price = price if price else "zero"
         pagetime = "zero"
         #datasave
         if response.meta.has_key('datasave1'):
             datasave1 = response.meta['datasave1']
         else:
             datasave1 = 'zero'
         #item loader
         item = GanjiItem()
         item['url'] = response.url
         item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
         item['website'] = website
         item['status'] = response.url + "-" + str(price) + "-" + str(
             status) + "-" + pagetime
         item['pagetime'] = pagetime
         item['datasave'] = [
             datasave1, response.xpath('//html').extract_first()
         ]
         yield item
 def parse(self, response):
     item = che300_price()
     item = dict(item, **response.meta['datainfo'])
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
     item['status'] = md5(response.url + "-" + update_code).hexdigest()
     if response.xpath('//p/text()'):
         # dffile
         dffile(self.fa, response.url, self.tag)
         data = json.loads(
             response.xpath('//p/text()').extract_first())['success']
         item['data'] = data
         yield item
Exemple #10
0
    def parse_car(self, response):

        # requests count
        if self.tag == 'update':
            addcounts = self.request_next()
            if addcounts:
                self.size = min(self.size, self.carnum - self.reqcounts)
                for i in range(self.reqcounts, self.reqcounts + self.size):
                    url = self.urllist[i]
                    if url:
                        yield scrapy.Request(url,
                                             callback=self.parse_car,
                                             errback=self.error_parse)

        if response.status == 200:
            # base infor
            # count
            self.counts += 1
            logging.log(msg="download              " + str(self.counts) +
                        "                  items",
                        level=logging.INFO)
            # dffile
            dffile(self.fa, response.url, self.tag)
            # datasave
            if response.meta.has_key('datasave1'):
                datasave1 = response.meta['datasave1']
            else:
                datasave1 = 'zero'

            #key and status (sold or sale, price,time)
            status = response.xpath('//div[@id="bigImg"]/em/@class')
            if status and status.extract_first() == "tag jijiangksBlue":
                status = "willsale"
            else:
                status = "insale"
            price = response.xpath(
                '//div[@class="newCarPrice"]/span[@class="sp02"]/text()')
            price = price.extract_first() if price else "zero"
            pagetime = time.strftime('%Y-%m-%d %X', time.localtime())
            #item loader
            item = GanjiItem()
            item['url'] = response.url
            item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
            item['website'] = website
            item['status'] = response.url + "-" + str(price) + "-" + str(
                status)
            item['pagetime'] = pagetime
            item['datasave'] = [
                datasave1, response.xpath('//html').extract_first()
            ]
            yield item
Exemple #11
0
    def parse_car(self, response):
        # requests count
        if self.tag == 'update':
            addcounts = self.request_next()
            if addcounts:
                self.size = min(self.size, self.carnum - self.reqcounts)
                for i in range(self.reqcounts, self.reqcounts + self.size):
                    url = self.urllist[i]
                    if url:
                        yield scrapy.Request(url,
                                             cookies=self.cookies_for_request,
                                             headers=self.headers,
                                             callback=self.parse_car,
                                             errback=self.error_parse)

        if response.status == 200:
            # base infor
            # count
            self.counts += 1
            logging.log(msg="download              " + str(self.counts) +
                        "                  items",
                        level=logging.INFO)
            # dffile
            dffile(self.fa, response.url, self.tag)
            # datasave
            if response.meta.has_key('datasave1'):
                datasave1 = response.meta['datasave1']
            else:
                datasave1 = 'zero'
            #key and status (sold or sale, price,time)
            if response.xpath("//*[@id='sold_button']"):
                status = "sold"
            else:
                status = "sale"
            price = response.xpath(
                '//span[@class="price"]/text()').extract_first()
            datetime = time.strftime('%Y-%m-%d %X', time.localtime())
            #item loader
            item = GanjiItem()
            item['url'] = response.url
            item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
            item['website'] = website
            item['status'] = response.url + "-" + str(price) + "-" + str(
                status)
            item['pagetime'] = datetime
            item['sold_date'] = status
            item['datasave'] = [
                datasave1, response.xpath('//html').extract_first()
            ]
            if status == "sold":
                yield item
Exemple #12
0
 def parse(self, response):
     item = che300_price()
     item = dict(item, **response.meta['datainfo'])
     item['url'] = response.url
     if response.xpath('//p/text()'):
         # dffile
         dffile(self.fa, response.url, self.tag)
         data = json.loads(response.xpath(
             '//p/text()').extract_first())['success']['factors']
         item = dict(item, **data)
         item['status'] = md5(".".join(str(item.values()))).hexdigest()
         item['grabtime'] = time.strftime('%Y-%m-%d %H:%M:%S',
                                          time.localtime())
         yield item
Exemple #13
0
 def parse(self, response):
     dffile(self.fa, response.url, self.tag)
     item = che300()
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
     item['id'] = re.findall(r'\d+', response.url)[1]
     item['salesdesc'] = response.xpath(
         '//div[@class="main-wrap clearfix"]/h1/text()').extract_first(
         ).replace(u" - \u5168\u90e8\u53c2\u6570", "")
     item['datasave'] = response.xpath(
         '//div[@class="main-wrap clearfix"]').extract_first()
     item['status'] = md5(response.url).hexdigest()
     item = dict(response.meta['datainfo'], **item)
     yield item
Exemple #14
0
 def parse_car(self, response):
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url,
                                          callback=self.parse_car,
                                          errback=self.error_parse)
     # count
     self.counts += 1
     logging.log(msg="download              " + str(self.counts) +
                 "                  items",
                 level=logging.INFO)
     # dffile
     dffile(self.fa, response.url, self.tag)
     # base infor
     # datasave
     if response.meta.has_key('datasave1'):
         datasave1 = response.meta['datasave1']
     else:
         datasave1 = 'zero'
     # key and status (sold or sale, price,time)
     status = response.xpath('//li[@id="car_state_text"]/@val')
     if status:
         if int(status.extract_first()) == 1:
             status = "sale"
         else:
             status = "sold"
     else:
         status = "sale"
     price = response.xpath('//strong[@id="price"]/text()')
     price = ".".join(price.re('\d+')) if price else "zero"
     pagetime = response.xpath('//li[@class="sendtime"]/text()')
     pagetime = "-".join(pagetime.re('\d+')) if pagetime else "zero"
     # item loader
     item = GanjiItem()
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
     item['website'] = website
     item['status'] = response.url + "-" + str(price) + "-" + str(
         status) + "-" + pagetime
     item['pagetime'] = pagetime
     item['datasave'] = [
         datasave1, response.xpath('//html').extract_first()
     ]
     yield item
Exemple #15
0
 def parse_car(self, response):
     # logging.log(msg="do parse car", level=logging.INFO)
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url,
                                          callback=self.parse_car,
                                          errback=self.error_parse)
     #count
     self.counts += 1
     logging.log(msg="download              " + str(self.counts) +
                 "                  items",
                 level=logging.INFO)
     #error check
     if not ("callback.58.com" in response.url):
         #dffile
         dffile(self.fa, response.url, self.tag)
         #base infor
         if response.meta.has_key('datasave1'):
             datasave1 = response.meta['datasave1']
         else:
             datasave1 = 'zero'
         #key and status (sold or sale, price,time)
         status = response.xpath('//a[@class="btn_3"]')
         status = "sold" if status else "sale"
         price = response.xpath('//span[@class="jiage"]/text()')
         price = str(price.extract_first()) if price else "zero"
         datetime = response.xpath('//div[@class="posttime"]/span/text()')
         datetime = "-".join(datetime.re('\d+')) if datetime else "zero"
         #item loader
         item = GanjiItem()
         item['url'] = response.url
         item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
         item['website'] = website
         item['status'] = response.url + "-" + str(price) + "-" + str(
             status) + "-" + datetime
         item['pagetime'] = datetime
         item['datasave'] = [
             datasave1, response.xpath('//html').extract_first()
         ]
         yield item
     else:
         logging.log(msg="Response.url:" + response.url + "-" + "Error",
                     level=logging.INFO)
Exemple #16
0
    def parse_car(self, response):
        # requests count
        if self.tag == 'update':
            addcounts = self.request_next()
            if addcounts:
                self.size = min(self.size, self.carnum - self.reqcounts)
                for i in range(self.reqcounts, self.reqcounts + self.size):
                    url = self.urllist[i]
                    if url:
                        yield scrapy.Request(url,
                                             callback=self.parse_car,
                                             errback=self.error_parse)
        # base infor
        # count
        self.counts += 1
        logging.log(msg="download              " + str(self.counts) +
                    "                  items",
                    level=logging.INFO)
        # dffile
        dffile(self.fa, response.url, self.tag)

        # datasave
        if response.meta.has_key('datasave1'):
            datasave1 = response.meta['datasave1']
        else:
            datasave1 = 'zero'

        #key and status (sold or sale, price,time)
        status = response.xpath('//a[@class="already-buy"]')
        status = "sold" if status else "sale"
        price = response.xpath('//em[@id="emprice"]/text()')
        price = str(price.extract_first()) if price else "zero"
        datetime = response.xpath(
            u'//li[contains(text(),"\u4e0a\u67b6\u65f6\u95f4")]/span/text()')
        datetime = "-".join(datetime.re('\d+')) if datetime else "zero"
        #item loader
        item = GanjiItem()
        item['url'] = response.url
        item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
        item['website'] = website
        item['status'] = response.url + "-" + str(price) + "-" + str(
            status) + "-" + datetime
        print(item['status'])
        item['pagetime'] = datetime
        item['datasave'] = [
            datasave1, response.xpath('//html').extract_first()
        ]
        yield item
Exemple #17
0
    def parse_car(self, response):
        # requests count
        if self.tag == 'update':
            addcounts = self.request_next()
            if addcounts:
                self.size = min(self.size, self.carnum - self.reqcounts)
                for i in range(self.reqcounts, self.reqcounts + self.size):
                    url = self.urllist[i]
                    if url:
                        yield scrapy.Request(url,
                                             callback=self.parse_car,
                                             errback=self.error_parse)
        else:
            #counts
            # request_count = self.crawler.stats.get_value('downloader/request_count')
            # if request_count >= self.counts - self.size / 10 and self.counts < self.carnum:
            #     self.size = min(self.size, self.carnum - self.counts)
            #     for i in range(self.counts+1, self.counts + self.size+1):
            #         url = "http://www.chemao.com/show" + str(i) + ".html"
            #         if not (dfcheck(self.df, str(i), self.tag)):
            #             yield scrapy.Request(url, callback=self.parse_car, errback=self.error_parse_original)
            #         if request_count >= self.counts:
            #             self.counts = self.counts + self.size
            #key and status (sold or sale, price,time)
            # dffile
            dffile(self.fa, response.url, self.tag, urltag='num')
            status = response.xpath('//div[@class="shelf-wram"]')
            if status:
                status = "sold"
                price = ".".join(
                    response.xpath('//span[@class="p"]/text()').re('\d+'))
            else:
                status = "sale"
                price = ".".join(
                    response.xpath('//span[@class="s4"]/text()').re('\d+'))
            datetime = response.xpath(
                '//span[@class="Tahoma"]/text()').extract_first()

            #item loader
            item = GanjiItem()
            item['url'] = response.url
            item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
            item['website'] = website
            item['status'] = response.url + "-" + str(price) + "-" + str(
                status) + "-" + datetime
            item['pagetime'] = datetime
            item['datasave'] = [response.xpath('//html').extract_first()]
            yield item
Exemple #18
0
 def parse(self, response):
     item = che168_price()
     item = dict(item ,**response.meta['datainfo'])
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
     item['status'] = md5(response.url).hexdigest()
     if json.loads(response.xpath('//p/text()').re('\{.*\}')[0])['returncode'] == 0:
         # dffile
         dffile(self.fa, response.url, self.tag)
         data = json.loads(response.xpath('//p/text()').re('\{.*\}')[0])['result']
         item['price_range'] = data['referenceprice']
         item['price_low'] =  float(data['referenceprice'].split('-',1)[0])
         item['price_hig'] = float(data['referenceprice'].split('-',1)[1])
         item['price_mid'] = (item['price_low'] + item['price_hig']) / 2
         item['guideprice'] = str(data['newcarprice'])
         yield item
 def parse(self, response):
     item = che300_price()
     item = dict(item, **response.meta['datainfo'])
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
     item['status'] = md5(response.url + "-" + update_code).hexdigest()
     if response.xpath('//p/text()').re('\{\"success.*\}\]\}'):
         # dffile
         dffile(self.fa, response.url, self.tag)
         data = json.loads(
             response.xpath('//p/text()').extract_first())['success']
         for dataitem in data:
             year = dataitem['year']
             price = dataitem['price']
             cols = 'year_' + str(year)
             item[cols] = price
     yield item
Exemple #20
0
 def parse_car(self, response):
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url,
                                          callback=self.parse_car,
                                          errback=self.error_parse)
     #count
     self.counts += 1
     logging.log(msg="download              " + str(self.counts) +
                 "                  items",
                 level=logging.INFO)
     # dffile
     dffile(self.fa, response.url, self.tag)
     # base infor
     if response.meta.has_key('datasave1'):
         datasave1 = response.meta['datasave1']
     else:
         datasave1 = 'zero'
     # key and status (sold or sale, price,time)
     status = response.xpath('//div[@class="viewad-content out-of-time"]')
     status = "sold" if status else "sale"
     if status == "sold":
         price = "zero"
     else:
         price = response.xpath('//span[@class="price"]/text()').re('\d+\.\d+')[0] \
             if response.xpath('//span[@class="price"]/text()').re('\d+\.\d+') else "zero"
     datetime = response.xpath('//span[@data-toggle="tooltip"]/text()')
     datetime = datetime.extract_first() if datetime else "zero"
     # item loader
     item = GanjiItem()
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
     item['website'] = website
     item['status'] = response.url + "-" + str(price) + "-" + str(
         status) + "-" + str(datetime)
     item['pagetime'] = datetime
     item['datasave'] = [
         datasave1, response.xpath('//html').extract_first()
     ]
     yield item
Exemple #21
0
 def parse_car(self, response):
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url,
                                          callback=self.parse_car,
                                          errback=self.error_parse)
     # base infor
     # count
     self.counts += 1
     logging.log(msg="download              " + str(self.counts) +
                 "                  items",
                 level=logging.INFO)
     # dffile
     dffile(self.fa, response.url, self.tag)
     # datasave
     if response.meta.has_key('datasave1'):
         datasave1 = response.meta['datasave1']
     else:
         datasave1 = 'zero'
     # key and status (sold or sale, price,time)
     status = response.xpath('//em[@class="information-sigh "]')
     status = "sold" if status else "sale"
     price = response.xpath('//input[@id="hidPrice"]/@value')
     price = str(price.extract_first()) if price else "zero"
     datetime = response.xpath(
         '//div[@class="tab-menu margin-md"]/i/text()')
     datetime = str(datetime.extract_first()[5:]) if datetime else "zero"
     # item loader
     item = GanjiItem()
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
     item['website'] = website
     item['status'] = response.url + "-" + str(price) + "-" + str(
         status) + "-" + datetime
     item['pagetime'] = datetime
     item['datasave'] = [
         datasave1, response.xpath('//html').extract_first()
     ]
     yield item
Exemple #22
0
    def parse_car(self, response):
        # requests count
        if self.tag == 'update':
            addcounts = self.request_next()
            if addcounts:
                self.size = min(self.size, self.carnum - self.reqcounts)
                for i in range(self.reqcounts, self.reqcounts + self.size):
                    url = self.urllist[i]
                    if url:
                        yield scrapy.Request(url,
                                             callback=self.parse_car,
                                             errback=self.error_parse)

        # status check
        if response.status == 200:
            # count
            self.counts += 1
            logging.log(msg="download              " + str(self.counts) +
                        "                  items",
                        level=logging.INFO)
            # dffile
            dffile(self.fa, response.url, self.tag)
            #base infor
            if response.meta.has_key('datasave1'):
                datasave1 = response.meta['datasave1']
            else:
                datasave1 = 'zero'
            #key and status (sold or sale, price,time)
            status = response.xpath('//*[@class="graybtn"]')
            status = "sold" if status else "sale"
            price = response.xpath('//b[@class="f30 numtype"]/text()')
            price = price.extract_first()[1:] if price else "zero"
            datetime = "zero"
            #item loader
            item = GanjiItem()
            item['url'] = response.url
            item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
            item['website'] = website
            item['status'] = response.url + "-" + str(price) + "-" + str(
                status) + "-" + str(datetime)
            item['pagetime'] = datetime
            item['datasave'] = [
                datasave1, response.xpath('//html').extract_first()
            ]
            yield item
Exemple #23
0
 def parse_car(self, response):
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url,
                                          callback=self.parse_car,
                                          errback=self.error_parse_original)
     # count
     self.counts += 1
     logging.log(msg="download              " + str(self.counts) +
                 "                  items",
                 level=logging.INFO)
     # dffile
     dffile(self.fa, response.url, self.tag)
     # base infor
     if response.meta.has_key('datasave1'):
         datasave1 = response.meta['datasave1']
     else:
         datasave1 = 'zero'
     if response.meta.has_key('pagetime'):
         pagetime = response.meta['pagetime']
     else:
         pagetime = 'zero'
     # key and status (sold or sale, price,time)
     status = "sale"
     price = response.xpath('//span[@id="total_price"]/text()')
     price = str(price.extract_first()) if price else "zero"
     # item loader
     item = GanjiItem()
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
     item['website'] = website
     item['status'] = response.url + "-" + str(price) + "-" + str(
         status) + "-" + md5(pagetime.encode("utf-8")).hexdigest()
     item['pagetime'] = pagetime
     item['datasave'] = [
         datasave1, response.xpath('//html').extract_first()
     ]
     yield item
Exemple #24
0
    def parse_car(self, response):
        if self.tag == 'update':
            addcounts = self.request_next()
            if addcounts:
                self.size = min(self.size, self.carnum - self.reqcounts)
                for i in range(self.reqcounts, self.reqcounts + self.size):
                    url = self.urllist[i]
                    if url:
                        yield scrapy.Request(url,
                                             callback=self.parse_car,
                                             errback=self.error_parse)
        # count
        self.counts += 1
        logging.log(msg="download              " + str(self.counts) +
                    "                  items",
                    level=logging.INFO)
        # dffile
        dffile(self.fa, response.url, self.tag, urltag='num')
        #key and status (sold or sale, price,time)
        status = response.xpath('//div[@class="p-rel nocar-text"]')
        if status:
            status = "sold"
            price = response.xpath(
                '//p[@style="text-align: center;color: #EF4C07;font-weight:bold;margin-bottom:12px;"]/text()'
            )
            price = round(float(".".join(price.re('\d+')[:2])) / 0.3, 2)
        else:
            status = "sale"
            price = response.xpath(
                '//div[@class="grid-c-l car-price"]/strong/text()')
            price = ".".join(price.re('\d+'))
        datetime = "zero"

        #item loader
        item = GanjiItem()
        item['url'] = response.url
        item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
        item['website'] = website
        item['status'] = response.url + "-" + str(price) + "-" + str(
            status) + "-" + datetime
        item['pagetime'] = datetime
        item['datasave'] = [response.xpath('//html').extract_first()]
        yield item
Exemple #25
0
 def parse(self, response):
     if self.wrong <= 10000:
         if response.status == 200 and response.xpath(
                 '//span[@class="date"]/text()') and not (response.xpath(
                     u'//div[contains(text(),"非常抱歉")]/text()')):
             self.wrong = 0
             #base infor
             # count
             self.counts += 1
             logging.log(msg="download              " + str(self.counts) +
                         "                  items",
                         level=logging.INFO)
             # dffile
             dffile(self.fa, response.url, self.tag)
             # datasave
             if response.meta.has_key('datasave1'):
                 datasave1 = response.meta['datasave1']
             else:
                 datasave1 = 'zero'
             #key and status (sold or sale, price,time)
             status = "sold"
             price = response.xpath('//span[@class="l"]/b/text()')
             price = price.extract_first() if price else "zero"
             datetime = response.xpath('//span[@class="date"]/text()')
             datetime = datetime.extract_first() if datetime else "zero"
             #item loader
             item = GanjiItem()
             item['url'] = response.url
             item['grabtime'] = time.strftime('%Y-%m-%d %X',
                                              time.localtime())
             item['website'] = website
             item['status'] = response.url
             item['pagetime'] = datetime
             item['datasave'] = [
                 datasave1,
                 response.xpath('//html').extract_first()
             ]
             yield item
         else:
             self.wrong = self.wrong + 1
             logging.log(msg= response.url+':wrong'+str(response.status)+'-'+str(len(response.xpath('//html').extract_first()))\
                   +"-"+response.xpath(u'//div[contains(text(),"非常抱歉")]/text()').extract_first(),level=logging.INFO)
Exemple #26
0
 def parse_car(self, response):
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url,
                                          callback=self.parse_car,
                                          errback=self.error_parse)
     # count
     self.counts += 1
     logging.log(msg="download              " + str(self.counts) +
                 "                  items",
                 level=logging.INFO)
     # dffile
     dffile(self.fa, response.url, self.tag)
     #base infor
     datasave1 = "zero"
     #key and status (sold or sale, price,time)
     status = response.xpath('//div[@class="d-photo img-album"]/em')
     status = "sold" if status else "sale"
     price = response.xpath('//div[@class="jiage"]/p/text()')
     price = price.extract_first()[1:-1] if price else "zero"
     datetime = response.xpath('//li[@class="br"]/em/text()')
     datetime = datetime.extract_first() if datetime else "zero"
     #item loader
     item = GanjiItem()
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
     item['website'] = website
     item['status'] = response.url + "-" + str(price) + "-" + str(
         status) + "-" + str(datetime)
     item['pagetime'] = datetime
     item['datasave'] = [
         datasave1,
         re.sub(r'\s+', ' ',
                response.xpath('//html').extract_first())
     ]
     yield item
Exemple #27
0
    def parse_car(self, response):

        # print(response.body)

        # requests count
        if self.tag == 'update':
            addcounts = self.request_next()
            if addcounts:
                self.size = min(self.size, self.carnum - self.reqcounts)
                for i in range(self.reqcounts, self.reqcounts + self.size):
                    url = self.urllist[i]
                    if url:
                        yield scrapy.Request(url, callback=self.parse_car, errback=self.error_parse, cookies={'_Xdwuv': '5046671120584'})

        if response.status==200 and response.url.find('confirm.php') == -1:
            # base infor
            # count
            self.counts += 1
            logging.log(msg="download              " + str(self.counts) + "                  items", level=logging.INFO)
            # dffile
            dffile(self.fa, response.url, self.tag)
            # datasave
            if response.meta.has_key('datasave1'):
                datasave1 = response.meta['datasave1']
            else:
                datasave1 = 'zero'
            #key and status (sold or sale, price,time)
            status = response.xpath('//div[@class="details_two"]/@style').extract_first() == "display:none;"
            status = "sale" if status else "sold"
            price = response.xpath('//span[@class="cost"]/text()').extract_first()
            datetime ="-".join(response.xpath('//span[@class="time"]/text()').re('\d+'))

            #item loader
            item = GanjiItem()
            item['url'] = response.url
            item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
            item['website'] = website
            item['status'] = response.url+ "-" + str(price) + "-" + str(status)+"-"+datetime
            item['pagetime'] = datetime
            item['datasave'] = [datasave1, response.xpath('//html').extract_first()]
            # print(item)
            yield item
Exemple #28
0
 def parse_car(self, response):
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url, callback=self.parse_car, errback=self.error_parse)
     if response.status==200 and len(response.xpath('//html').extract_first())>=20000:
         # count
         self.counts += 1
         logging.log(msg="download              " + str(self.counts) + "                  items", level=logging.INFO)
         # dffile
         dffile(self.fa, response.url, self.tag)
         #base infor
         # datasave
         if response.meta.has_key('datasave1'):
             datasave1 = response.meta['datasave1']
         else:
             datasave1 = 'zero'
         #key and status (sold or sale, price,time)
         status = response.xpath('//a[@class="btn_3"]')
         status = "sold" if status else "sale"
         # price = response.xpath('//strong/span/text()')
         # price = str(price.extract_first()) if price else "zero"
         price = response.xpath('//div[@class="car_details_con_2017"]/span/strong/text()').re('\d+.\d+')[0] \
             if response.xpath('//div[@class="car_details_con_2017"]/span/strong/text()').re('\d+.\d+') else "zero"
         # price = re.findall("\d+.\d+",str(price.extract_first()))[0] if price else "zero"
         datetime ="zero"
         #item loader
         item = GanjiItem()
         item['url'] = response.url
         item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
         item['website'] = website
         item['status'] = response.url+ "-" + str(price) + "-" + str(status)+"-"+datetime
         item['pagetime'] = datetime
         item['datasave'] = [datasave1, response.xpath('//html').extract_first()]
         yield item
Exemple #29
0
 def parse_car(self, response):
     # requests count
     if self.tag == 'update':
         addcounts = self.request_next()
         if addcounts:
             self.size = min(self.size, self.carnum - self.reqcounts)
             for i in range(self.reqcounts, self.reqcounts + self.size):
                 url = self.urllist[i]
                 if url:
                     yield scrapy.Request(url, callback=self.parse_car, errback=self.error_parse)
     # base infor
     # count
     self.counts += 1
     logging.log(msg="download              " + str(self.counts) + "                  items",level=logging.INFO)
     # dffile
     dffile(self.fa, response.url, self.tag)
     # datasave
     if response.meta.has_key('datasave1'):
         datasave1 = response.meta['datasave1']
     else:
         datasave1 = 'zero'
     # key and status (sold or sale, price,time)
     status = response.xpath(u'//span[@class="num" and contains(text(),"过期")]')  #xpath不能解析
     status = "sold" if status else "sale"
     # price = response.xpath('//div[@class="price"]/span/text()')
     price = response.xpath('//span[@class="cf60 price"]/span/text()')
     price = ".".join(price.re('\d+')) if price else "zero"
     # pagetime = response.xpath('//div[@class="title_infoL"]/span/i/text()')
     pagetime = response.xpath('//div[@class="title_infoL"]/span[1]/i[2]/text()')
     pagetime = pagetime.extract_first() if pagetime else "zero"
     # item loader
     item = GanjiItem()
     item['url'] = response.url
     item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
     item['website'] = website
     item['status'] = response.url + "-" + str(price) + "-" + str(status) + "-" + pagetime
     item['pagetime'] = pagetime
     item['datasave'] = [datasave1, response.xpath('//html').extract_first()]
     yield item
    def parse(self, response):
        dffile(self.fa, response.url, self.tag)
        item = che300()
        item['url'] = response.url
        item['grabtime'] = time.strftime('%Y-%m-%d %X', time.localtime())
        item['id'] = re.findall(r'\d+', response.url)[1]
        #item['salesdesc'] = response.xpath('//div[@class="main-wrap clearfix"]/h1/text()').extract_first().replace(u" - \u5168\u90e8\u53c2\u6570","")
        # item['datasave'] = response.xpath('//p/text()').extract_first()
        item['datasave'] = response.text
        temp = json.loads(item['datasave'])
        modelConfigure = temp['success']['modelConfigure']
        item['salesdesc'] = temp['success']['modelInfo']['name']
        item['status'] = md5(response.url + "-" + update_code).hexdigest()
        item = dict(response.meta['datainfo'], **item)
        modelInfolist = [
            'drive_name', 'model_status', 'highlight_config', 'name',
            'short_name', 'market_date', 'stop_make_year', 'level_id', 'level',
            'sname', 'ssname', 'maker_name', 'maker_type', 'star', 'sid',
            'bid', 'brand_name', 'year', 'price', 'discharge_standard',
            'gear_type', 'liter', 'liter_turbo', 'door_number', 'body_type',
            'min_reg_year', 'max_reg_year', 'engine_power'
        ]
        for i in modelInfolist:
            item[i] = temp['success']['modelInfo'][i]

        modelConfigureList = []
        for i in modelConfigure:
            for j in i:
                modelConfigureList.append(j)

        namedic = {
            'output': u'\u6392\u91cf\uff08\u5347\uff09',
            'factoryname': u'\u5382\u5546',
            'gear': u'\u53d8\u901f\u7bb1',
            'petrol_test1': u'\u5e02\u533a\u5de5\u51b5\u6cb9\u8017',
            'petrol_test2': u'\u5e02\u90ca\u5de5\u51b5\u6cb9\u8017',
            'petrol': u'\u7efc\u5408\u5de5\u51b5\u6cb9\u8017',
            'hundred_petrol': u'\u767e\u516c\u91cc\u7b49\u901f\u6cb9\u8017',
            'accelerate': u'\u52a0\u901f\u65f6\u95f4',
            'accelerate_test': u'\u52a0\u901f\u65f6\u95f4(0\u2014100km/h)',
            'masspeed': u'\u6700\u9ad8\u8f66\u901f',
            'seats': u'\u4e58\u5458\u4eba\u6570\uff08\u533a\u95f4\uff09',
            'color': u'\u8f66\u8eab\u989c\u8272',
            'length': u'\u957f',
            'width': u'\u5bbd',
            'heigh': u'\u9ad8',
            'wheelbase': u'\u8f74\u8ddd',
            'frontgauge': u'\u524d\u8f6e\u8ddd',
            'backgauge': u'\u540e\u8f6e\u8ddd',
            'weigth': u'\u6574\u5907\u8d28\u91cf',
            'full_weight': u'\u6ee1\u8f7d\u8d28\u91cf',
            'min_ground_dis': u'\u6700\u5c0f\u79bb\u5730\u95f4\u9699',
            'close_angel': u'\u63a5\u8fd1\u89d2',
            'departure_angel': u'\u79bb\u53bb\u89d2',
            'baggage': u'\u884c\u674e\u53a2\u5bb9\u79ef',
            'baggage_compartment_cover_mode':
            u'\u884c\u674e\u53a2\u76d6\u5f00\u5408\u65b9\u5f0f',
            'baggage_open_way': u'\u884c\u674e\u53a2\u6253\u5f00\u65b9\u5f0f',
            'doors': u'\u8f66\u95e8\u6570',
            'roof_type': u'\u8f66\u9876\u578b\u5f0f',
            'roof_style': u'\u8f66\u7bf7\u578b\u5f0f',
            'movement_surround': u'\u8fd0\u52a8\u5305\u56f4',
            'sport_appearance_suite': u'\u8fd0\u52a8\u5916\u89c2\u5957\u4ef6',
            'engine_position': u'\u53d1\u52a8\u673a\u4f4d\u7f6e',
            'engine_type': u'\u53d1\u52a8\u673a\u578b\u53f7',
            'output1': u'\u6392\u91cf(L)',
            'cylinder': u'\u6392\u91cf',
            'method': u'\u8fdb\u6c14\u5f62\u5f0f',
            'lwv': u'\u6c14\u7f38\u6392\u5217\u578b\u5f0f',
            'lwvnumber': u'\u6c7d\u7f38\u6570',
            'valve': u'\u6bcf\u7f38\u6c14\u95e8\u6570',
            'valve_mechanism': u'\u6c14\u95e8\u7ed3\u6784',
            'compress': u'\u538b\u7f29\u6bd4',
            'boremm': u'\u7f38\u5f84',
            'strokemm': u'\u884c\u7a0b',
            'maxps': u'\u6700\u5927\u9a6c\u529b',
            'maxpower': u'\u6700\u5927\u529f\u7387-\u529f\u7387\u503c',
            'maxrpm': u'\u6700\u5927\u529f\u7387-\u8f6c\u901f',
            'maxnm': u'\u6700\u5927\u626d\u77e9-\u626d\u77e9\u503c',
            'maxtorque': u'\u6700\u5927\u626d\u77e9\u2014\u8f6c\u901f',
            'engine_technology': u'\u7279\u6709\u6280\u672f'
            # ,'fueltyp1e':u'\u71c3\u6599\u7c7b\u578b'
            ,
            'fueltype': u"\u80fd\u6e90\u7c7b\u578b",
            'fuelmethod': u'\u4f9b\u6cb9\u65b9\u5f0f',
            'fulevolumn': u'\u71c3\u6cb9\u7bb1\u5bb9\u79ef',
            'head_port': u'\u7f38\u76d6\u6750\u6599',
            'cylinder_material': u'\u7f38\u4f53\u6750\u6599',
            'emission': u'\u73af\u4fdd\u6807\u51c6',
            'gear1': u'\u53d8\u901f\u7bb1',
            'shift_paddles': u'\u6362\u6863\u62e8\u7247',
            'body_structure': u'\u8f66\u4f53\u7ed3\u6784',
            'minimum_turning_radius': u'\u6700\u5c0f\u8f6c\u5f2f\u534a\u5f84',
            'power_steering': u'\u8f6c\u5411\u52a9\u529b',
            'frontbrake': u'\u524d\u5236\u52a8\u7c7b\u578b',
            'backbrake': u'\u540e\u5236\u52a8\u7c7b\u578b',
            'handbrake': u'\u624b\u5239\u7c7b\u578b',
            'driveway': u'\u9a71\u52a8\u65b9\u5f0f',
            'aimatic': u'\u7a7a\u6c14\u60ac\u6302',
            'fronthang': u'\u524d\u60ac\u6302\u7c7b\u578b',
            'backhang': u'\u540e\u60ac\u6302\u7c7b\u578b',
            'driver_codrive_airbag':
            u'\u9a7e\u9a76\u4f4d\u5b89\u5168\u6c14\u56ca',
            'driver_codrive_airbag1':
            u'\u526f\u9a7e\u9a76\u4f4d\u5b89\u5168\u6c14\u56ca',
            'front_back_side_airbag':
            u'\u524d\u6392\u4fa7\u5b89\u5168\u6c14\u56ca',
            'front_back_head_airbag':
            u'\u524d\u6392\u5934\u90e8\u6c14\u56ca(\u6c14\u5e18)',
            'knee_airbag': u'\u819d\u90e8\u6c14\u56ca',
            'front_back_side_airbag1':
            u'\u540e\u6392\u4fa7\u5b89\u5168\u6c14\u56ca',
            'front_back_head_airbag1':
            u'\u540e\u6392\u5934\u90e8\u6c14\u56ca(\u6c14\u5e18)',
            'safety_belt_is_not_prompt':
            u'\u5b89\u5168\u5e26\u672a\u7cfb\u63d0\u793a',
            'seats_belt_force_limiter':
            u'\u5b89\u5168\u5e26\u9650\u529b\u529f\u80fd',
            'belt_tightening_function':
            u'\u5b89\u5168\u5e26\u9884\u6536\u7d27\u529f\u80fd',
            'front_belt_adjust': u'\u524d\u5b89\u5168\u5e26\u8c03\u8282',
            'back_belt': u'\u540e\u6392\u5b89\u5168\u5e26',
            'back_row_threepoint_belt':
            u'\u540e\u6392\u4e2d\u95f4\u4e09\u70b9\u5f0f\u5b89\u5168\u5e26',
            'electronic_speed_limit': u'\u7535\u5b50\u9650\u901f',
            'tire_pressure_monitoring':
            u'\u80ce\u538b\u76d1\u6d4b\u88c5\u7f6e',
            'zero_tire_pressure':
            u'\u96f6\u538b\u7eed\u884c(\u96f6\u80ce\u538b\u7ee7\u7eed\u884c\u9a76)',
            'Collapsible_steering_column':
            u'\u53ef\u6e83\u7f29\u8f6c\u5411\u67f1',
            'central_lock': u'\u8f66\u5185\u4e2d\u63a7\u9501',
            'central_door_lock': u'\u4e2d\u63a7\u95e8\u9501',
            'children_lock': u'\u513f\u7ae5\u9501',
            'remote_control_key': u'\u9065\u63a7\u94a5\u5319',
            'keyless_start_system':
            u'\u65e0\u94a5\u5319\u542f\u52a8\u7cfb\u7edf',
            'engine_electronic_control_unit':
            u'\u53d1\u52a8\u673a\u7535\u5b50\u9632\u76d7',
            'frontwheel': u'\u524d\u8f6e\u80ce\u89c4\u683c',
            'backwheel': u'\u540e\u8f6e\u80ce\u89c4\u683c',
            'fronthub': u'\u524d\u8f6e\u6bc2\u89c4\u683c',
            'backhub': u'\u540e\u8f6e\u6bc2\u89c4\u683c',
            'sparewheel': u'\u5907\u80ce\u7c7b\u578b',
            'hubmaterial': u'\u8f6e\u6bc2\u6750\u6599',
            'abs_antilock':
            u'ABS(\u5239\u8f66\u9632\u62b1\u6b7b\u5236\u52a8\u7cfb\u7edf)',
            'braking_force_distribution_ebd_cbc':
            u'\u7535\u5b50\u5236\u52a8\u529b\u5206\u914d\u7cfb\u7edf',
            'brake_assist_eba_bas_ba':
            u'EBA/EVA(\u7d27\u6025\u5236\u52a8\u8f85\u52a9\u7cfb\u7edf)',
            'traction_control_system_asr_tcs_trc':
            u'TCS(\u7275\u5f15\u529b\u63a7\u5236\u7cfb\u7edf)',
            'vehicle_stability_control_esp_dsc_vsc':
            u'DSC(\u52a8\u6001\u7a33\u5b9a\u63a7\u5236\u7cfb\u7edf)',
            'EPS': u'\u968f\u901f\u52a9\u529b\u8f6c\u5411\u8c03\u8282(EPS)',
            'automatic_parking': u'\u81ea\u52a8\u9a7b\u8f66',
            'hill_start_assist': u'\u4e0a\u5761\u8f85\u52a9',
            'hill_descent_control': u'\u9661\u5761\u7f13\u964d',
            'backing_radar': u'\u6cca\u8f66\u96f7\u8fbe(\u8f66\u524d)',
            'baking_radar1': u'\u5012\u8f66\u96f7\u8fbe',
            'rear_video_monitor': u'\u5012\u8f66\u5f71\u50cf',
            'panoramic_camera': u'\u5168\u666f\u6444\u50cf\u5934',
            'cruise_control': u'\u5b9a\u901f\u5de1\u822a\u7cfb\u7edf',
            'adaptive_cruise': u'\u81ea\u9002\u5e94\u5de1\u822a',
            'gps_navigation': u'GPS\u7535\u5b50\u5bfc\u822a',
            'human_computer_interaction_system':
            u'\u4eba\u673a\u4ea4\u4e92\u7cfb\u7edf',
            'park_assist': u'\u81ea\u52a8\u6cca\u8f66\u5165\u4f4d',
            'abls':
            u'\u4e3b\u52a8\u5239\u8f66/\u4e3b\u52a8\u5b89\u5168\u7cfb\u7edf',
            'active_front_steering':
            u'\u6574\u4f53\u4e3b\u52a8\u8f6c\u5411\u7cfb\u7edf',
            'night_vision': u'\u591c\u89c6\u7cfb\u7edf',
            'blind_spot_detecttion': u'\u76f2\u70b9\u68c0\u6d4b',
            'front_rear_lectric_windows': u'\u8f66\u7a97',
            'windows': u'\u8f66\u7a97',
            'window_clip_hand_safety':
            u'\u7535\u52a8\u7a97\u9632\u5939\u529f\u80fd',
            'skylight_opening_and_closing_mode':
            u'\u5929\u7a97\u5f00\u5408\u65b9\u5f0f',
            'skylight_type': u'\u5929\u7a97\u578b\u5f0f',
            'backglass_sunshade': u'\u540e\u7a97\u906e\u9633\u5e18',
            'backsideglass_sunshade': u'\u540e\u6392\u4fa7\u906e\u9633\u5e18',
            'rear_windshield_wiper': u'\u540e\u96e8\u5237\u5668',
            'rain_sensor': u'\u96e8\u5237\u4f20\u611f\u5668',
            'electric_door': u'\u7535\u52a8\u5438\u5408\u95e8',
            'Rearview_m_with_sideturuning_light':
            u'\u540e\u89c6\u955c\u5e26\u4fa7\u8f6c\u5411\u706f',
            'rearview_mirror_memory':
            u'\u5916\u540e\u89c6\u955c\u8bb0\u5fc6\u529f\u80fd',
            'rearview_mirror_heating':
            u'\u5916\u540e\u89c6\u955c\u52a0\u70ed\u529f\u80fd',
            'rearview_mirror_electric_folding':
            u'\u5916\u540e\u89c6\u955c\u7535\u52a8\u6298\u53e0\u529f\u80fd',
            'rearview_mirror_electric_adjustment':
            u'\u5916\u540e\u89c6\u955c\u7535\u52a8\u8c03\u8282',
            'rearview_mirror_auto_anti_glare':
            u'\u5185\u540e\u89c6\u955c\u9632\u7729\u76ee\u529f\u80fd',
            'visor__mirror': u'\u906e\u9633\u677f\u5316\u5986\u955c',
            'headlamp_type': u'\u524d\u7167\u706f\u7c7b\u578b',
            'headlight_automatic_shutdown':
            u'\u524d\u5927\u706f\u81ea\u52a8\u5f00\u95ed',
            'headlamp_automatic_washing_function':
            u'\u524d\u7167\u706f\u81ea\u52a8\u6e05\u6d17\u529f\u80fd',
            'headlamp_following_steering':
            u'\u524d\u5927\u706f\u968f\u52a8\u8f6c\u5411',
            'headlamp_heigth_adjust':
            u'\u524d\u7167\u706f\u7167\u5c04\u9ad8\u5ea6\u8c03\u8282',
            'antifog_ligths': u'\u524d\u96fe\u706f',
            'body_read_light': u'\u8f66\u53a2\u524d\u9605\u8bfb\u706f',
            'body_read_back_light': u'\u8f66\u53a2\u540e\u9605\u8bfb\u706f',
            'inside_atmosphere_lights': u'\u8f66\u5185\u6c1b\u56f4\u706f',
            'daytime__lights': u'\u65e5\u95f4\u884c\u8f66\u706f',
            'taillight': u'LED\u5c3e\u706f',
            'height_third_brakelight':
            u'\u9ad8\u4f4d(\u7b2c\u4e09)\u5236\u52a8\u706f',
            'corner_lamp':
            u'\u8f6c\u5411\u5934\u706f\uff08\u8f85\u52a9\u706f\uff09',
            'steering_headlights': u'\u4fa7\u8f6c\u5411\u706f',
            'luggage_compartment_light': u'\u884c\u674e\u53a2\u706f',
            'steering_wheel_adjustment':
            u'\u65b9\u5411\u76d8\u524d\u540e\u8c03\u8282',
            'steering_wheel_adjustment1':
            u'\u65b9\u5411\u76d8\u4e0a\u4e0b\u8c03\u8282',
            'steering_wheel_adjustment_type':
            u'\u65b9\u5411\u76d8\u8c03\u8282\u65b9\u5f0f',
            'steering_wheel_surface_material':
            u'\u65b9\u5411\u76d8\u8868\u9762\u6750\u6599',
            'multi_function_steering_wheel':
            u'\u591a\u529f\u80fd\u65b9\u5411\u76d8',
            'multi_function_steering_wheel_function':
            u'\u591a\u529f\u80fd\u65b9\u5411\u76d8\u529f\u80fd',
            'computer_screen_of_driving':
            u'\u884c\u8f66\u7535\u8111\u663e\u793a\u5c4f',
            'heads_up_display': u'HUD\u62ac\u5934\u6570\u5b57\u663e\u793a',
            'interior_color': u'\u5185\u9970\u989c\u8272',
            'rear_row_hang_cup': u'\u540e\u6392\u676f\u67b6',
            'car_power_supply_voltage':
            u'\u8f66\u5185\u7535\u6e90\u7535\u538b',
            'sports_seats': u'\u8fd0\u52a8\u5ea7\u6905',
            'seats_fabric': u'\u5ea7\u6905\u9762\u6599',
            'driver_seat_electric_adjustment':
            u'\u9a7e\u9a76\u5ea7\u5ea7\u6905\u8c03\u8282\u65b9\u5f0f',
            'driver_seat_electric_adjustment1':
            u'\u526f\u9a7e\u9a76\u5ea7\u6905\u8c03\u8282\u65b9\u5f0f',
            'adjustable_lumbar_support':
            u'\u9a7e\u9a76\u5ea7\u8170\u90e8\u652f\u6491\u8c03\u8282',
            'adjustable_shoulder_support':
            u'\u9a7e\u9a76\u5ea7\u80a9\u90e8\u652f\u6491\u8c03\u8282',
            'seat_armrest': u'\u524d\u5ea7\u4e2d\u592e\u6276\u624b',
            'seat_armrest1': u'\u540e\u5ea7\u4e2d\u592e\u6276\u624b',
            'seat_ventilation': u'\u5ea7\u6905\u901a\u98ce',
            'front_back_seat_heating':
            u'\u9a7e\u9a76\u5ea7\u5ea7\u6905\u52a0\u70ed',
            'massage_seat': u'\u5ea7\u6905\u6309\u6469\u529f\u80fd',
            'electric_chair_memory': u'\u7535\u52a8\u5ea7\u6905\u8bb0\u5fc6',
            'children_safty_chair_fixed_device':
            u'\u513f\u7ae5\u5b89\u5168\u5ea7\u6905\u56fa\u5b9a\u88c5\u7f6e',
            'third_row_seats': u'\u7b2c\u4e09\u6392\u5ea7\u6905',
            'interactive_location_services':
            u'\u5b9a\u4f4d\u4e92\u52a8\u670d\u52a1',
            'bluetooth_car_phone': u'\u8f66\u8f7d\u7535\u8bdd',
            'bluetooth_car_phone1': u'\u84dd\u7259\u7cfb\u7edf',
            'interior_harddisk': u'\u5185\u7f6e\u786c\u76d8',
            'onboard_tv': u'\u8f66\u8f7d\u7535\u89c6',
            'speakers_number': u'\u626c\u58f0\u5668\u6570\u91cf',
            'DVD': u'DVD',
            'single_cd_player': u'CD',
            'color_screen_display_control':
            u'\u4e2d\u63a7\u53f0\u6db2\u6676\u5c4f',
            'rear_lcd_screen': u'\u540e\u6392\u6db2\u6676\u663e\u793a\u5668',
            'auto_ac': u'\u7a7a\u8c03\u63a7\u5236\u65b9\u5f0f',
            'zone_temperature_control':
            u'\u6e29\u5ea6\u5206\u533a\u63a7\u5236',
            'rear_independent_ac': u'\u540e\u6392\u72ec\u7acb\u7a7a\u8c03',
            'rear_ac': u'\u540e\u6392\u51fa\u98ce\u53e3',
            'ac_pollen_filter':
            u'\u7a7a\u6c14\u8c03\u8282/\u82b1\u7c89\u8fc7\u6ee4',
            'car_refrigerator': u'\u8f66\u8f7d\u51b0\u7bb1',
            'accelerate1': u'\u52a0\u901f\u65f6\u95f4(0\u2014100km/h)',
            'allowance': u'\u56fd\u5bb6/\u5730\u533a\u8865\u52a9(\u5143)',
            'motor_type': u'\u7535\u673a\u7c7b\u578b',
            'total_power_EV': u'\u7535\u52a8\u673a\u603b\u529f\u7387(kW)',
            'total_torque_EV':
            u'\u7535\u52a8\u673a\u603b\u626d\u77e9(N\u00b7m)',
            'front_peak_power_EV':
            u'\u524d\u7535\u52a8\u673a\u6700\u5927\u529f\u7387(kW)',
            'front_peak_torque_EV':
            u'\u524d\u7535\u52a8\u673a\u6700\u5927\u626d\u77e9(N\u00b7m)',
            'rear_peak_power_EV':
            u'\u540e\u7535\u52a8\u673a\u6700\u5927\u529f\u7387(kW)',
            'rear_peak_torque_EV':
            u'\u540e\u7535\u52a8\u673a\u6700\u5927\u626d\u77e9(N\u00b7m)',
            'vehicle_power': u'\u7cfb\u7edf\u7efc\u5408\u529f\u7387(kW)',
            'vehicle_torque':
            u'\u7cfb\u7edf\u7efc\u5408\u626d\u77e9(N\u00b7m)',
            'battery_type': u'\u7535\u6c60\u7c7b\u578b',
            'battery_range_MIIT':
            u'\u5de5\u4fe1\u90e8\u7eed\u822a\u91cc\u7a0b(km)',
            'battery_capacity': u'\u7535\u6c60\u5bb9\u91cf(kWh)',
            'power_consumption':
            u'\u767e\u516c\u91cc\u8017\u7535\u91cf(kWh/100km)',
            'battery_pack_warrenty': u'\u7535\u6c60\u7ec4\u8d28\u4fdd',
            'charging_time': u'\u7535\u6c60\u5145\u7535\u65f6\u95f4',
            'fast_charge_electricity': u'\u5feb\u5145\u7535\u91cf(%)',
            'charging_pile_price': u'\u5145\u7535\u6869\u4ef7\u683c',
        }

        # namedic2={
        #     'factoryname':u'\u5382\u5546'
        #     ,'level':u'\u7ea7\u522b'
        #     ,'engine':u'\u53d1\u52a8\u673a'
        #     ,'geardesc':u'\u53d8\u901f\u7bb1'
        #     ,'bodystyle':u'\u8f66\u8eab\u7ed3\u6784'
        #     ,'masspeed':u'\u6700\u9ad8\u8f66\u901f(km/h)'
        #     ,'accelerate':u'\u5b98\u65b90-100km/h\u52a0\u901f(s)'
        #     ,'accelerate_test':u'\u5b9e\u6d4b0-100km/h\u52a0\u901f(s)'
        #     ,'brake_test':u'\u5b9e\u6d4b100-0km/h\u5236\u52a8(m)'
        #     ,'petrol_test':u'\u5b9e\u6d4b\u6cb9\u8017(L/100km)'
        #     ,'petrol':u'\u5de5\u4fe1\u90e8\u7efc\u5408\u6cb9\u8017(L/100km)'
        #     ,'ground_distance_test':u'\u5b9e\u6d4b\u79bb\u5730\u95f4\u9699(mm)'
        #     ,'vehicle_warranty ':u'\u6574\u8f66\u8d28\u4fdd'
        #     ,'length':u'\u957f\u5ea6(mm)'
        #     ,'width':
        # }
        namedic2 = {
            'front_back_head_airbag':
            u'\u524d/\u540e\u6392\u5934\u90e8\u6c14\u56ca(\u6c14\u5e18)',
            'central_lock': u'\u8f66\u5185\u4e2d\u63a7\u9501',
            'keyless_start_system':
            u'\u65e0\u94a5\u5319\u542f\u52a8\u7cfb\u7edf',
            'safety_belt_is_not_prompt':
            u'\u5b89\u5168\u5e26\u672a\u7cfb\u63d0\u793a',
            'engine_electronic_control_unit':
            u'\u53d1\u52a8\u673a\u7535\u5b50\u9632\u76d7',
            'remote_control_key': u'\u9065\u63a7\u94a5\u5319',
            'zero_tire_pressure':
            u'\u96f6\u80ce\u538b\u7ee7\u7eed\u884c\u9a76',
            'isofix_child_seat_interface':
            u'ISOFIX\u513f\u7ae5\u5ea7\u6905\u63a5\u53e3',
            'knee_airbag': u'\u819d\u90e8\u6c14\u56ca',
            'driver_codrive_airbag':
            u'\u4e3b/\u526f\u9a7e\u9a76\u5ea7\u5b89\u5168\u6c14\u56ca',
            'pke': u'\u65e0\u94a5\u5319\u8fdb\u5165\u7cfb\u7edf',
            'tire_pressure_monitoring':
            u'\u80ce\u538b\u76d1\u6d4b\u88c5\u7f6e',
            'front_back_side_airbag': u'\u524d/\u540e\u6392\u4fa7\u6c14\u56ca',
            'geartype': u'\u53d8\u901f\u7bb1',
            'gear': u'\u7b80\u79f0',
            'gearnumber': u'\u6321\u4f4d\u4e2a\u6570',
            'geardesc': u'\u53d8\u901f\u7bb1\u7c7b\u578b',
            'rearview_mirror_electric_folding':
            u'\u540e\u89c6\u955c\u7535\u52a8\u6298\u53e0',
            'rearview_mirror_memory': u'\u540e\u89c6\u955c\u8bb0\u5fc6',
            'window_clip_hand_safety':
            u'\u8f66\u7a97\u9632\u5939\u624b\u529f\u80fd',
            'rearview_mirror_electric_adjustment':
            u'\u540e\u89c6\u955c\u7535\u52a8\u8c03\u8282',
            'visor__mirror': u'\u906e\u9633\u677f\u5316\u5986\u955c',
            'back_privacy_glass':
            u'\u540e\u6392\u4fa7\u9690\u79c1\u73bb\u7483',
            'rearview_mirror_auto_anti_glare':
            u'\u5185/\u5916\u540e\u89c6\u955c\u81ea\u52a8\u9632\u7729\u76ee',
            'backglass_sunshade': u'\u540e\u98ce\u6321\u906e\u9633\u5e18',
            'windshield_wiper_sensor': u'\u611f\u5e94\u96e8\u5237',
            'rear_windshield_wiper': u'\u540e\u96e8\u5237',
            'insulating_glass':
            u'\u9632\u7d2b\u5916\u7ebf/\u9694\u70ed\u73bb\u7483',
            'backsideglass_sunshade': u'\u540e\u6392\u4fa7\u906e\u9633\u5e18',
            'rearview_mirror_heating': u'\u540e\u89c6\u955c\u52a0\u70ed',
            'front_rear_lectric_windows':
            u'\u524d/\u540e\u7535\u52a8\u8f66\u7a97',
            'brake_assist_eba_bas_ba':
            u'\u5239\u8f66\u8f85\u52a9(EBA/BAS/BA\u7b49)',
            'hill_descent_control': u'\u9661\u5761\u7f13\u964d',
            'back_vaq':
            u'\u540e\u6865\u9650\u6ed1\u5dee\u901f\u5668/\u5dee\u901f\u9501',
            'vehicle_stability_control_esp_dsc_vsc':
            u'\u8f66\u8eab\u7a33\u5b9a\u63a7\u5236(ESC/ESP/DSC\u7b49)',
            'aimatic': u'\u7a7a\u6c14\u60ac\u67b6',
            'front_vaq':
            u'\u524d\u6865\u9650\u6ed1\u5dee\u901f\u5668/\u5dee\u901f\u9501',
            'hill_start_assist': u'\u4e0a\u5761\u8f85\u52a9',
            'braking_force_distribution_ebd_cbc':
            u'\u5236\u52a8\u529b\u5206\u914d(EBD/CBC\u7b49)',
            'variable_suspension': u'\u53ef\u53d8\u60ac\u67b6',
            'automatic_parking': u'\u81ea\u52a8\u9a7b\u8f66',
            'limited_slip_differential':
            u'\u4e2d\u592e\u5dee\u901f\u5668\u9501\u6b62\u529f\u80fd',
            'variable_gear_steering_ratio': u'\u53ef\u53d8\u8f6c\u5411\u6bd4',
            'traction_control_system_asr_tcs_trc':
            u'\u7275\u5f15\u529b\u63a7\u5236(ASR/TCS/TRC\u7b49)',
            'abs_antilock': u'ABS\u9632\u62b1\u6b7b',
            'parking_brake_type': u'\u9a7b\u8f66\u5236\u52a8\u7c7b\u578b',
            'frontbrake': u'\u524d\u5236\u52a8\u5668\u7c7b\u578b',
            'backbrake': u'\u540e\u5236\u52a8\u5668\u7c7b\u578b',
            'sparewheel': u'\u5907\u80ce\u89c4\u683c',
            'frontwheel': u'\u524d\u8f6e\u80ce\u89c4\u683c',
            'backwheel': u'\u540e\u8f6e\u80ce\u89c4\u683c',
            'length': u'\u957f\u5ea6(mm)',
            'baggage': u'\u884c\u674e\u53a2\u5bb9\u79ef(L)',
            'seats': u'\u5ea7\u4f4d\u6570(\u4e2a)',
            'min_ground_distance': u'\u6700\u5c0f\u79bb\u5730\u95f4\u9699(mm)',
            'doors': u'\u8f66\u95e8\u6570(\u4e2a)',
            'frontgauge': u'\u524d\u8f6e\u8ddd(mm)',
            'heigh': u'\u9ad8\u5ea6(mm)',
            'wheelbase': u'\u8f74\u8ddd(mm)',
            'backgauge': u'\u540e\u8f6e\u8ddd(mm)',
            'weigth': u'\u6574\u5907\u8d28\u91cf(kg)',
            'width': u'\u5bbd\u5ea6(mm)',
            'fulevolumn': u'\u6cb9\u7bb1\u5bb9\u79ef(L)',
            'steering_headlights': u'\u8f6c\u5411\u5934\u706f',
            'Headlights_full': u'\u8fdc\u5149\u706f',
            'inside_atmosphere_lights': u'\u8f66\u5185\u6c1b\u56f4\u706f',
            'adjustable_headlight_height':
            u'\u5927\u706f\u9ad8\u5ea6\u53ef\u8c03',
            'headlight_cleaning_device':
            u'\u5927\u706f\u6e05\u6d17\u88c5\u7f6e',
            'antifog_ligths': u'\u524d\u96fe\u706f',
            'automatic_headlights': u'\u81ea\u52a8\u5934\u706f',
            'daytime__lights': u'\u65e5\u95f4\u884c\u8f66\u706f',
            'Headlights_dipped': u'\u8fd1\u5149\u706f',
            'adaptive_light_distance': u'\u81ea\u9002\u5e94\u8fdc\u8fd1\u5149',
            'corner_lamp': u'\u8f6c\u5411\u8f85\u52a9\u706f',
            'body_structure': u'\u8f66\u4f53\u7ed3\u6784',
            'backhang': u'\u540e\u60ac\u67b6\u7c7b\u578b',
            'driveway': u'\u9a71\u52a8\u65b9\u5f0f',
            'fronthang': u'\u524d\u60ac\u67b6\u7c7b\u578b',
            'assistanttype': u'\u52a9\u529b\u7c7b\u578b',
            'mp3_audio_support': u'CD\u652f\u6301MP3/WMA',
            'bluetooth_car_phone': u'\u84dd\u7259/\u8f66\u8f7d\u7535\u8bdd',
            'speakers_number': u'\u626c\u58f0\u5668\u6570\u91cf',
            'speaker_brand': u'\u626c\u58f0\u5668\u54c1\u724c',
            'rear_lcd_screen': u'\u540e\u6392\u6db2\u6676\u5c4f',
            'gps_navigation': u'GPS\u5bfc\u822a\u7cfb\u7edf',
            'power_supply': u'220V/230V\u7535\u6e90',
            'single_cd_player': u'\u591a\u5a92\u4f53\u7cfb\u7edf',
            'onboard_tv': u'\u8f66\u8f7d\u7535\u89c6',
            'external_audio_source_connectors':
            u'\u5916\u63a5\u97f3\u6e90\u63a5\u53e3',
            'interactive_location_services':
            u'\u5b9a\u4f4d\u4e92\u52a8\u670d\u52a1',
            'color_screen_display_control':
            u'\u4e2d\u63a7\u53f0\u5f69\u8272\u5927\u5c4f',
            'fuelmethod': u'\u4f9b\u6cb9\u65b9\u5f0f',
            'maxtorque': u'\u6700\u5927\u626d\u77e9\u8f6c\u901f(rpm)',
            'maxrpm': u'\u6700\u5927\u529f\u7387\u8f6c\u901f(rpm)',
            'maxps': u'\u6700\u5927\u9a6c\u529b(Ps)',
            'fuelnumber': u'\u71c3\u6cb9\u6807\u53f7',
            'fueltype': u'\u80fd\u6e90\u7c7b\u578b',
            'strokemm': u'\u884c\u7a0b(mm)',
            'lwvnumber': u'\u6c14\u7f38\u6570(\u4e2a)',
            'valve': u'\u6bcf\u7f38\u6c14\u95e8\u6570(\u4e2a)',
            'valve_mechanism': u'\u914d\u6c14\u673a\u6784',
            'emission': u'\u73af\u4fdd\u6807\u51c6',
            'boremm': u'\u7f38\u5f84(mm)',
            'maxpower': u'\u6700\u5927\u529f\u7387(kW)',
            'engine_technology': u'\u53d1\u52a8\u673a\u7279\u6709\u6280\u672f',
            'lwv': u'\u6c14\u7f38\u6392\u5217\u5f62\u5f0f',
            'method': u'\u8fdb\u6c14\u5f62\u5f0f',
            'maxnm': u'\u6700\u5927\u626d\u77e9(N\xb7m)',
            'cylinder_material': u'\u7f38\u4f53\u6750\u6599',
            'compress': u'\u538b\u7f29\u6bd4',
            'engine_type': u'\u53d1\u52a8\u673a\u578b\u53f7',
            'cylinder': u'\u6392\u91cf(mL)',
            'head_port': u'\u7f38\u76d6\u6750\u6599',
            'park_assist': u'\u81ea\u52a8\u6cca\u8f66\u5165\u4f4d',
            'doubling_asisst': u'\u5e76\u7ebf\u8f85\u52a9',
            'night_vision': u'\u591c\u89c6\u7cfb\u7edf',
            'ldws': u'\u8f66\u9053\u504f\u79bb\u9884\u8b66\u7cfb\u7edf',
            'adaptive_cruise': u'\u81ea\u9002\u5e94\u5de1\u822a',
            'panoramic_camera': u'\u5168\u666f\u6444\u50cf\u5934',
            'lcd_screen_display_control':
            u'\u4e2d\u63a7\u6db2\u6676\u5c4f\u5206\u5c4f\u663e\u793a',
            'engine_start_stop': u'\u53d1\u52a8\u673a\u542f\u505c\u6280\u672f',
            'abls':
            u'\u4e3b\u52a8\u5239\u8f66/\u4e3b\u52a8\u5b89\u5168\u7cfb\u7edf',
            'active_front_steering':
            u'\u6574\u4f53\u4e3b\u52a8\u8f6c\u5411\u7cfb\u7edf',
            'level': u'\u7ea7\u522b',
            'vehicle_warranty': u'\u6574\u8f66\u8d28\u4fdd',
            'bodystyle': u'\u8f66\u8eab\u7ed3\u6784',
            'salesdesc': u'\u8f66\u578b\u540d\u79f0',
            'masspeed': u'\u6700\u9ad8\u8f66\u901f(km/h)'
            # ,'price':u'\u5382\u5546\u6307\u5bfc\u4ef7(\u5143)'
            ,
            'output': u'\u6392\u91cf(L)',
            'factoryname': u'\u5382\u5546',
            'accelerate': u'\u5b98\u65b90-100km/h\u52a0\u901f(s)',
            'petrol_test': u'\u5b9e\u6d4b\u6cb9\u8017(L/100km)',
            'accelerate_test': u'\u5b9e\u6d4b0-100km/h\u52a0\u901f(s)',
            'petrol': u'\u5de5\u4fe1\u90e8\u7efc\u5408\u6cb9\u8017(L/100km)',
            'ground_distance_test':
            u'\u5b9e\u6d4b\u79bb\u5730\u95f4\u9699(mm)',
            'engine': u'\u53d1\u52a8\u673a',
            'brake_test': u'\u5b9e\u6d4b100-0km/h\u5236\u52a8(m)',
            'zone_temperature_control':
            u'\u6e29\u5ea6\u5206\u533a\u63a7\u5236',
            'rear_ac': u'\u540e\u5ea7\u51fa\u98ce\u53e3',
            'car_refrigerator': u'\u8f66\u8f7d\u51b0\u7bb1',
            'rear_independent_ac': u'\u540e\u6392\u72ec\u7acb\u7a7a\u8c03',
            'ac_pollen_filter':
            u'\u8f66\u5185\u7a7a\u6c14\u8c03\u8282/\u82b1\u7c89\u8fc7\u6ee4',
            'auto_ac': u'\u7a7a\u8c03\u63a7\u5236\u65b9\u5f0f',
            'computer_screen_of_driving':
            u'\u884c\u8f66\u7535\u8111\u663e\u793a\u5c4f',
            'steering_wheel_shift': u'\u65b9\u5411\u76d8\u6362\u6321',
            'lhz': u'\u65b9\u5411\u76d8\u52a0\u70ed',
            'backing_radar': u'\u524d/\u540e\u9a7b\u8f66\u96f7\u8fbe',
            'leather_steering_wheel': u'\u771f\u76ae\u65b9\u5411\u76d8',
            'steering_wheel_adjustment': u'\u65b9\u5411\u76d8\u8c03\u8282',
            'rear_video_monitor': u'\u5012\u8f66\u89c6\u9891\u5f71\u50cf',
            'memory_code': u'\u65b9\u5411\u76d8\u8bb0\u5fc6',
            'steering_wheel_electric_adjustment':
            u'\u65b9\u5411\u76d8\u7535\u52a8\u8c03\u8282',
            'cruise_control': u'\u5b9a\u901f\u5de1\u822a',
            'multi_function_steering_wheel':
            u'\u591a\u529f\u80fd\u65b9\u5411\u76d8',
            'lcd_panel': u'\u5168\u6db2\u6676\u4eea\u8868\u76d8',
            'heads_up_display': u'HUD\u62ac\u5934\u6570\u5b57\u663e\u793a',
            'induction_trunk': u'\u611f\u5e94\u540e\u5907\u53a2',
            'electric_sunroof': u'\u7535\u52a8\u5929\u7a97',
            'hubtype': u'\u94dd\u5408\u91d1\u8f6e\u5708',
            'panoramic_sunroof': u'\u5168\u666f\u5929\u7a97',
            'electric_trunk': u'\u7535\u52a8\u540e\u5907\u53a2',
            'sliding_door': u'\u4fa7\u6ed1\u95e8',
            'sport_appearance_suite': u'\u8fd0\u52a8\u5916\u89c2\u5957\u4ef6',
            'roof_rack': u'\u8f66\u9876\u884c\u674e\u67b6',
            'electric_door': u'\u7535\u52a8\u5438\u5408\u95e8',
            'sports_seats': u'\u8fd0\u52a8\u98ce\u683c\u5ea7\u6905',
            'adjustable_seat_height': u'\u5ea7\u6905\u9ad8\u4f4e\u8c03\u8282',
            'third_row_seats': u'\u7b2c\u4e09\u6392\u5ea7\u6905',
            'rear_seat_electric_adjustment':
            u'\u540e\u6392\u5ea7\u6905\u7535\u52a8\u8c03\u8282',
            'leather_seats': u'\u5ea7\u6905\u6750\u8d28',
            'adjustable_rear_row_backrest_angle':
            u'\u7b2c\u4e8c\u6392\u9760\u80cc\u89d2\u5ea6\u8c03\u8282',
            'rear_seat_down':
            u'\u540e\u6392\u5ea7\u6905\u653e\u5012\u65b9\u5f0f',
            'rear_row_seat_movement':
            u'\u7b2c\u4e8c\u6392\u5ea7\u6905\u79fb\u52a8',
            'seat_armrest': u'\u524d/\u540e\u4e2d\u592e\u6276\u624b',
            'driver_seat_electric_adjustment':
            u'\u4e3b/\u526f\u9a7e\u9a76\u5ea7\u7535\u52a8\u8c03\u8282',
            'rear_row_hang_cup': u'\u540e\u6392\u676f\u67b6',
            'front_back_seat_heating':
            u'\u524d/\u540e\u6392\u5ea7\u6905\u52a0\u70ed',
            'seat_ventilation': u'\u524d/\u540e\u6392\u5ea7\u6905\u901a\u98ce',
            'electric_chair_memory': u'\u7535\u52a8\u5ea7\u6905\u8bb0\u5fc6',
            'adjustable_lumbar_support':
            u'\u8170\u90e8\u652f\u6491\u8c03\u8282',
            'massage_seat': u'\u524d/\u540e\u6392\u5ea7\u6905\u6309\u6469',
            'adjustable_shoulder_support':
            u'\u80a9\u90e8\u652f\u6491\u8c03\u8282',
            'allowance': u'\u56fd\u5bb6/\u5730\u533a\u8865\u52a9(\u5143)',
            'motor_type': u'\u7535\u673a\u7c7b\u578b',
            'total_power_EV': u'\u7535\u52a8\u673a\u603b\u529f\u7387(kW)',
            'total_torque_EV':
            u'\u7535\u52a8\u673a\u603b\u626d\u77e9(N\u00b7m)',
            'front_peak_power_EV':
            u'\u524d\u7535\u52a8\u673a\u6700\u5927\u529f\u7387(kW)',
            'front_peak_torque_EV':
            u'\u524d\u7535\u52a8\u673a\u6700\u5927\u626d\u77e9(N\u00b7m)',
            'rear_peak_power_EV':
            u'\u540e\u7535\u52a8\u673a\u6700\u5927\u529f\u7387(kW)',
            'rear_peak_torque_EV':
            u'\u540e\u7535\u52a8\u673a\u6700\u5927\u626d\u77e9(N\u00b7m)',
            'vehicle_power': u'\u7cfb\u7edf\u7efc\u5408\u529f\u7387(kW)',
            'vehicle_torque':
            u'\u7cfb\u7edf\u7efc\u5408\u626d\u77e9(N\u00b7m)',
            'battery_type': u'\u7535\u6c60\u7c7b\u578b',
            'battery_range_MIIT':
            u'\u5de5\u4fe1\u90e8\u7eed\u822a\u91cc\u7a0b(km)',
            'battery_capacity': u'\u7535\u6c60\u5bb9\u91cf(kWh)',
            'power_consumption':
            u'\u767e\u516c\u91cc\u8017\u7535\u91cf(kWh/100km)',
            'battery_pack_warrenty': u'\u7535\u6c60\u7ec4\u8d28\u4fdd',
            'charging_time': u'\u7535\u6c60\u5145\u7535\u65f6\u95f4',
            'fast_charge_electricity': u'\u5feb\u5145\u7535\u91cf(%)',
            'charging_pile_price': u'\u5145\u7535\u6869\u4ef7\u683c',
        }
        count = 0
        ztlist = []
        for i in modelConfigureList:
            temp1 = modelConfigure[count][i]
            count = count + 1
            for k in temp1:
                ztlist.append(k)

        ztdict = {}
        for i in ztlist:
            for ename, uname in i.items():
                ztdict[ename] = uname

        flag = 0
        if ztdict.get(u'\u6392\u91cf(L)'):
            flag = 0
        else:
            flag = 1

        #count1=0
        if flag == 1:
            for ename, uname in namedic.items():
                item[ename] = "-"
                if ztdict.get(uname):
                    item[ename] = ztdict.get(uname)
                if ename == "fueltype" and item[ename] == "-" and ztdict.get(
                        u'燃料类型'):
                    item[ename] = ztdict.get(u'燃料类型')

        else:
            for ename, uname in namedic2.items():
                item[ename] = "-"
                if ztdict.get(uname):
                    item[ename] = ztdict.get(uname)
                if ename == "fueltype" and item[ename] == "-" and ztdict.get(
                        u'燃料类型'):
                    item[ename] = ztdict.get(u'燃料类型')
            #count1=count1+1

        # print(item)
        yield item