Очистка нежелательных рядов результата скрапа - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь очистить данные с помощью 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 голосов
/ 28 мая 2019

Поскольку перед экспортом результатов в CSV вам нужно только очистить список prices, вы можете сделать следующее: (Предполагается, что 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...