советы по преобразованию данных, собранных с скребков экрана - PullRequest
1 голос
/ 16 января 2012

добрый день, ребята,

У меня есть экранный скребок, который собирает данные о списках собственности на нескольких сайтах по недвижимости. Все они имеют несколько общих полей, таких как цена, площадь пола и т. Д. Однако, как и все очищенные данные, значения для полей в настоящее время довольно нежелательны. Например, в price у меня есть очевидные значения, такие как $1,000,000,000, но у меня также есть такие вещи, как $1,000,000,000 Price on Ask и Price on Ask. Поэтому в настоящее время я сохранил все свои очищенные поля как char в своей базе данных.

Я хотел бы преобразовать эти строковые поля в моей базе данных из символов в соответствующий тип, например строку, в int, чтобы я мог соответствующим образом проиндексировать их. Может кто-нибудь предложить мне какой-нибудь совет, какой будет разумная процедура и метод, чтобы начать преобразование данных?

1 Ответ

1 голос
/ 16 января 2012

Вы хотите выбросить строку "Цена по запросу"?Или это ценная информация?

Если в данных много шума и они бесполезны, я бы запустил фильтр, чтобы удалить все нецифровые символы.

Но, если позволяет время, я предпочитаю явно обрабатывать данные с помощью сопоставления с образцом (пример кода - PHP):

//$price is raw string
$price=str_replace(',','',$price);    //Get rid of commas
$price=str_replace('$','',$price);    //Get rid of dollar signs

if($price=='Price On Ask')$price=null;
elseif(preg_match('/^\d+$/',$price))$price=(int)$price;  //Simple number
elseif(preg_match('/^(\d+) Price On Ask$/i',$price,$parts)){
   $price=(int)$parts[1];
   }
else{
   echo "Unexpected price string: $price\n";
   $price=null;
   }

У меня есть структура для установки флагов для некоторых строк.Кроме того, когда в данных появляется новая строка, мой сценарий становится шумным, и я могу решить, имеет ли это значение.

(Примечание: установка $ price в null подразумевает в базе данных значение NULL, а не ноль.) * +1010 *

...