init
This commit is contained in:
parent
8b0e267acb
commit
2b5f2cd120
33
README.md
33
README.md
@ -1,3 +1,32 @@
|
||||
# hotels
|
||||
# Реестр гостиниц и иных средств размещения Минэка
|
||||
|
||||
Реестр вело федеральное агентство по туризму, полномочия которого переданы в октябре 2022 года Минэку.
|
||||
|
||||
Теперь реестр ведет Минэконом: https://tourism.gov.ru/reestry/reestr-gostinits-i-inykh-sredstv-razmeshcheniya/
|
||||
|
||||
Поля:
|
||||
|
||||
|
||||
```sh
|
||||
['Наименование Юр.Лица (ИП)']
|
||||
['Регистрационный номер свидетельства']
|
||||
['Адрес']
|
||||
['Полное наименование']
|
||||
['Дата решения о присвоении категории']
|
||||
['Вид']
|
||||
['Специалист по классификации']
|
||||
['ОГРН/ОГРНИП']
|
||||
['Сокращенное наименование']
|
||||
['Дата выдачи свидетельства']
|
||||
['Email']
|
||||
['Регион']
|
||||
['Телефон']
|
||||
['Аккредитованная организация']
|
||||
['Номер решения о присвоении категории']
|
||||
['ИНН']
|
||||
['Срок действия']
|
||||
['Присвоенная категория']
|
||||
['Сайт']
|
||||
['Информация об аккредитованной организации, выдавшей свидетельство']
|
||||
```
|
||||
|
||||
База средств размещения (гостиницы, хостелы) по данным Минэка
|
||||
18209
hotels.csv
Normal file
18209
hotels.csv
Normal file
File diff suppressed because it is too large
Load Diff
55
parser.lua
Normal file
55
parser.lua
Normal 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
|
||||
Loading…
x
Reference in New Issue
Block a user