Как правильно спарсить все адреса сайта и добавить их в базу данных?

77
10 июля 2021, 06:20

Пишу парсер для сайта https://kladr-rf.ru/ 1) нужно получить все города со всех регионов и улицы со всех городов, данные о городах и улицах спарсил 2) далее нужно записать данные в базу(из json файла) в поле адрес в порядке "Город|Улица|дом" а также в поле region_id записывать id каждого региона в котором есть эти города. Не могу разобраться как в поле адрес добавлять данные поочередно, например сначала добавить в базу все улицы города агидейск вместе с самим городом и идти так дальше по остальным городам. Есть ли какие то мысли как это все можно организовать? Ниже код который парсит города и улицы.

$url = 'https://kladr-rf.ru/';
$file = file_get_contents($url);
for($i = 1; $i < 5; $i++) {  
  $url_region = 'https://kladr-rf.ru/0'.$i.'/000/'; 
  $region_files = file_get_contents($url_region);
  $document = phpQuery::newDocument($region_files);
  $needle = "Город";
  $region_find = $document->find('.span4 a:contains("'.$needle.'")')->text();
  $region_next = $document->find('.span4 a:contains("'.$needle.'")')->next()->attr('href');
  $array_cities[] = $region_find;
  for($j = 1; $j < 5; $j++) { 
    $url = 'https://kladr-rf.ru/0'.$i.'/000/00'.$j.'/000/';
    $files = file_get_contents($url);
    $document = phpQuery::newDocument($files);
    $street_find = $document->find('.span4')->text();
    $array_streets[] = $street_find; 
  }
}
$result_city = array_unique($array_cities);
$result_streets = array_unique($array_streets);
//print_r($result_city);
print_r($result_streets);
$file = file_get_contents('data.json');
$array_kldr = json_decode($file,TRUE);
unset($file);
$array_kldr = [
'city'=>$result_city,
'streets'=>$result_streets,
];
file_put_contents('data.json',json_encode($array_kldr));
unset($array_kldr);

Примерно в таком формате я хотел бы добавлять данные в файл.

[
    [
        'city_name'=>'Название города',
        'streets'=>[
            [
                'streets_name'=>'Название улицы',
                'params'=>[
                ]
            ]
        ]
    ]
]
READ ALSO
RewriteRule не работает

RewriteRule не работает

хочу перенаправить страницу с урлом на другую, те

113
Замена кавычек на “елочки”

Замена кавычек на “елочки”

Нужно заменить в тексте кавычки на "елочки"; кавычками считаем как символ ', так и "Есть такая функция:

169