import json
import requests
from bs4 import BeautifulSoup
URL = 'https://opi.dfo.kz/p/ru/DfoObjects/objects/teaser-view/25720?RevisionId=0&ReportNodeId=2147483637&PluginId=6c2aa36248f44fd7ae888cb43817d49f&ReportId=61005620'
HEADERS = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0',
'accept': '*/*'}
def get_html(url, params=None):
# Получение объекта Response
r = requests.get(url, headers=HEADERS, params=params)
return r
def get_content(html):
# Получение объекта BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
# Парсинг название заголовков
table_headers = tuple(map(lambda elem: elem.get_text(strip=True), soup.select('table.dsnode-table thead tr td')))
# Пасринг строк таблицы
table_strings = tuple(map(lambda elem: elem, soup.select('table.dsnode-table tbody tr')))
# Компоновка информации в массив словарей
table = [{header: element_table.get_text(strip=True) for header, element_table in
zip(table_headers, string.select('td'))} for string in table_strings]
return table
def parse():
html = get_html(URL.strip())
# Проверка на получение успешного ответа с сервера
if html.ok:
try:
data = get_content(html.text)
write_to_file(data)
except Exception as ex:
print(ex)
else:
print('Error connection')
def write_to_file(data):
with open(f"{input('Введите название файла: ')}.json", "w", encoding="utf-8") as write_file:
json.dump(data, write_file, ensure_ascii=False, indent=4)
parse()