This commit is contained in:
Татьяна Фарбер 2025-12-06 13:40:30 +04:00
parent 8b0e267acb
commit 2b5f2cd120
3 changed files with 18295 additions and 2 deletions

View File

@ -1,3 +1,32 @@
# hotels # Реестр гостиниц и иных средств размещения Минэка
Реестр вело федеральное агентство по туризму, полномочия которого переданы в октябре 2022 года Минэку.
Теперь реестр ведет Минэконом: https://tourism.gov.ru/reestry/reestr-gostinits-i-inykh-sredstv-razmeshcheniya/
Поля:
```sh
['Наименование Юр.Лица (ИП)']
['Регистрационный номер свидетельства']
['Адрес']
['Полное наименование']
['Дата решения о присвоении категории']
['Вид']
['Специалист по классификации']
['ОГРН/ОГРНИП']
['Сокращенное наименование']
['Дата выдачи свидетельства']
['Email']
['Регион']
['Телефон']
['Аккредитованная организация']
['Номер решения о присвоении категории']
['ИНН']
['Срок действия']
['Присвоенная категория']
['Сайт']
['Информация об аккредитованной организации, выдавшей свидетельство']
```
База средств размещения (гостиницы, хостелы) по данным Минэка

18209
hotels.csv Normal file

File diff suppressed because it is too large Load Diff

55
parser.lua Normal file
View File

@ -0,0 +1,55 @@
local htmlparser = require "htmlparser"
local http_request = require "http.request"
require "lfs"
htmlparser_looplimit = 10000
local _M
local csvfile = assert(io.open('hotels.csv', "w"))
function parse_html(html)
local data = {}
local root = htmlparser.parse(html)
local items = root:select('.info-part')
for k, item in ipairs(items) do
if (item:select('.info__text')[1]) then
data[item:select('.info__name')[1]:getcontent()] = item:select('.info__text')[1]:getcontent()
end
end
for _, item in pairs(data) do
str = str..';'..item
end
csvfile:write(str..'\n')
end
function get_links()
local links = {}
local maxi = 1872
local i = 1
while i<=maxi do
local url = 'https://tourism.gov.ru/reestry/reestr-gostinits-i-inykh-sredstv-razmeshcheniya/?PAGEN_1='..i
local headers, stream = assert(http_request.new_from_uri(url):go())
local body = assert(stream:get_body_as_string())
local items = root:select(".reestr-item")
for _, item in ipairs(items) do
table.insert(links,item.attributes['data-link'])
end
i = i + 1
end
return links
end
function get_html(url)
local headers, stream = assert(http_request.new_from_uri(url):go())
return assert(stream:get_body_as_string())
end
function _M.parse()
for key,url in ipairs(get_links()) do
parse_html(get_html(url))
end
csvfile:close()
end
return _M