清除不必要的结果行

时间:2019-05-28 10:59:21

标签: python scrapy

我正在尝试使用Scrapy抓取数据,并使用mapcompose清除任何不需要的字符的价格结果。

到目前为止,我得到的结果为我提供了一个干净的价格,没有任何不需要的字符,例如货币符号或任何。要么 , 但是,它给了我“额外”的空行。

import scrapy
from scrapy.loader import ItemLoader
from scrapy.loader.processors import MapCompose, Join
from makelaars.items import MakelaarsItem

class BasicSpider(scrapy.Spider):
    name = 'basic'
    allowed_domains = ['web']
    start_urls = ['https://www.bouka-makelaars.nl/koopaanbod']

    def parse(self, response):
        l = ItemLoader(item=MakelaarsItem(), response=response)
        #Extracting the content using css selectors
        l.add_css('address', '.details.property-page-link > h2[class=address]::text')
        l.add_css('price', '.price::text',MapCompose(lambda i: i.replace('.', '')),re='[.0-9]+')

        return l.load_item()

到目前为止,我得到的输出是:

{'address': [u'Wezelrade 143 B',
             u'Wilhelmina van Pruisenlaan 245',
             u'Suzannaland 206',
             u'Molenweide 32',
             u'Spiraeastraat 00 2e etage',
             u'Kerklaan 122',
             u'Brandtstraat 163 /163A',
             u'Wouwermanstraat 9 /11/13/15',
             u'Scheepersstraat 100 /102/102A',
             u'Honthorststraat 137 /135',
             u'Brandtstraat 151 151A'],
 'price': [u'119500',
           u'',
           u'',
           u'200000',
           u'',
           u'',
           u'269500',
           u'',
           u'',
           u'539500',
           u'',
           u'',
           u'200000',
           u'',
           u'',
           u'299000',
           u'280000',
           u'',
           u'',
           u'675000',
           u'',
           u'',
           u'495000',
           u'',
           u'',
           u'475000',
           u'',
           u'',
           u'350000']}

1 个答案:

答案 0 :(得分:0)

由于只需要清除prices列表,然后再将结果导出到CSV,因此可以执行以下操作: (假设output是包含您在问题中显示的内容的字典)

output['price'] = [item for item in output['price'] if item]
# empty strings in python are considered False, while others are True

更新后的output['price']的长度将恰好为11,如下所示:

['119500', '200000', '269500', '539500', '200000', '299000', '280000', '675000', '495000', '475000', '350000']