public function PickVariables($row)
 {
     //upravit strukturu
     $row = '<country>' . $row . '</country>';
     //get variables
     $rawdata = parent::ExtractWithXpath($row, $this->CountriesPatterns, 'text', 'first');
     return $rawdata;
 }
 public function PickDepartureVariables($row)
 {
     //upravit strukturu
     $row = '<flight>' . $row . '</flight>';
     //get variables
     $rawdata = parent::ExtractWithXpath($row, $this->DeparturePatterns, 'text', 'first');
     return $rawdata;
 }
Exemplo n.º 3
0
 public function Geocoding()
 {
     //take addresses not yet scraped in the past or incorrectly scraped, geocode scraping, save to cities table
     $addressesWithoutGeolocation = Address::whereNull('city_id')->get();
     $GeoScraped = new GoogleMapsScraper();
     foreach ($addressesWithoutGeolocation as $address) {
         $gmaps_output = $GeoScraped->Geocode($address->raw_input);
         //get gmaps_status
         $dataArray['gmaps_status'] = null;
         $dataArray = parent::ExtractWithXpath($gmaps_output, $this->GeoPatterns, 'text', 'first', 'xml');
         //get address_components in array
         $componentsArray = array();
         $componentsArray = parent::ExtractWithXpath($gmaps_output, $this->AddressComponentsPattern, 'html', 'multiple', 'xml');
         $cityArray['city_name'] = null;
         $countryArray['country_code'] = null;
         $countryArray['country_name'] = null;
         //search country component in every address component, once found extract name and code
         foreach ($componentsArray as $AddressComponent) {
             if (preg_match("|type>country<|", $AddressComponent)) {
                 $AddressComponent = '<result>' . $AddressComponent . '</result>';
                 //get country_code, country_name
                 $countryArray = parent::ExtractWithXpath($AddressComponent, $this->CountryPatterns, 'text', 'first', 'xml');
             } elseif (preg_match("|type>natural_feature<|", $AddressComponent)) {
                 $AddressComponent = '<result>' . $AddressComponent . '</result>';
                 //get country_code, country_name
                 $cityArray = parent::ExtractWithXpath($AddressComponent, $this->IslandPatterns, 'text', 'first', 'xml');
             } elseif (preg_match("|type>locality<|", $AddressComponent)) {
                 $AddressComponent = '<result>' . $AddressComponent . '</result>';
                 //get country_code, country_name
                 $cityArray = parent::ExtractWithXpath($AddressComponent, $this->CityPatterns, 'text', 'first', 'xml');
             }
         }
         if (empty($cityArray['city_name']) and !empty($cityArray['island'])) {
             $cityArray['city_name'] = $cityArray['island'];
         }
         if (empty($countryArray['country_code'])) {
             $countryArray['country_code'] = 'xx';
         }
         //if city doesn't exist, save it to cities
         $city = City::firstOrNew(['city_name' => $cityArray['city_name'], 'country_code' => strtolower($countryArray['country_code'])]);
         $city->gmaps_status = $dataArray['gmaps_status'];
         $city->gmaps_output = $gmaps_output;
         $city->country_name = $countryArray['country_name'];
         //city_slug
         $slug = new SlugClass();
         $city->city_slug = $slug->slugify($cityArray['city_name']);
         $city->save();
         //save foreign key in addresses
         $address->city_id = $city->id;
         $address->save();
     }
 }