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