Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Данные из web в таблицу: парсить HTML или запуск стороннего скрипта? / 4 сообщений из 4, страница 1 из 1
30.03.2018, 12:47
    #39623226
forpostAdm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из web в таблицу: парсить HTML или запуск стороннего скрипта?
Добрый день, уважаемые гуру Оракла,

Возникла необходимость автоматизировать ввод данных, которые находятся на Интернет ресурсе, в таблицу БД Оракл.
Данные - это собственно межбанковские процентные ставки. Брать предполагаю, например, отсюда
https://www.bankai.lt/paskolos/tarpbankines-palukanu-normos

Ранее мной был написан скрипт на Python'е, который создаёт sql-файл с простыми инструкциями типа
Код: plsql
1.
INSERT INTO s_base_rates (BRA_BRT_MNEMO, BRA_DT, BRA_CRNC, BRA_VALUE) VALUES ('1MEURIBOR', TO_DATE('2018-03-28','YYYY-MM-DD'), 'EUR', '-0.37100');



Код на Python'е выглядит так:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
import urllib.request
import urllib.response
from bs4 import BeautifulSoup
import cx_Oracle
 
url_euribor = 'https://www.bankai.lt/paskolos/tarpbankines-palukanu-normos/euribor'
r1 = urllib.request.Request(url_euribor)
response1 = urllib.request.urlopen(r1)
response_data1 = response1.read()
 
soup1 = BeautifulSoup(response_data1, "html.parser")
 
date1 = soup1.find('div', {"class": "tline tline50 rowbox1"}).find('div', {"class": "t cb s14 rico icob"}).text
EUR1M = soup1.find('div', {"class": "tline tline50 rowbox1"}).find('div', {"class": "t fr bl tc s14 rci-1-3 rick cell row1 col3"}).text
EUR3M = soup1.find('div', {"class": "tline tline50 rowbox1"}).find('div', {"class": "t fr bl tc s14 rci-1-4 rick cell row1 col4"}).text
EUR6M = soup1.find('div', {"class": "tline tline50 rowbox1"}).find('div', {"class": "t fr bl tc s14 bgy rci-1-5 rick cell row1 col5"}).text
EUR12M = soup1.find('div', {"class": "tline tline50 rowbox1"}).find('div', {"class": "t fr bl tc s14 rci-1-6 rick cell row1 col6"}).text
print(date1)
line1 = "insert into s_base_rates (BRA_BRT_MNEMO, BRA_DT, BRA_CRNC, BRA_VALUE) values ('1MEURIBOR', TO_DATE('" + date1 + "','YYYY-MM-DD'), 'EUR', '" + EUR1M + "');\n"
line2 = "insert into s_base_rates (BRA_BRT_MNEMO, BRA_DT, BRA_CRNC, BRA_VALUE) values ('3MEURIBOR', TO_DATE('" + date1 + "','YYYY-MM-DD'), 'EUR', '" + EUR3M + "');\n"
line3 = "insert into s_base_rates (BRA_BRT_MNEMO, BRA_DT, BRA_CRNC, BRA_VALUE) values ('6MEURIBOR', TO_DATE('" + date1 + "','YYYY-MM-DD'), 'EUR', '" + EUR6M + "');\n"
line4 = "insert into s_base_rates (BRA_BRT_MNEMO, BRA_DT, BRA_CRNC, BRA_VALUE) values ('1YEURIBOR', TO_DATE('" + date1 + "','YYYY-MM-DD'), 'EUR', '" + EUR12M + "');\n"
... сокращено ...
file_name = "Libor_" + date1 + ".sql"
with open(file_name, 'w') as output_file:
    output_file.write("-- EURIBOR/LIBOR procentines normos uz " + date1 + "\n")
 
lines = line1 + line2 + line3 + line4 + line5 + line6 + line7 + line8 + line9 + line10 + line11 + line12
with open(file_name, 'a') as output_file:
    output_file.write(lines)



Но этот Python-скрипт надо запускать вручную, а затем так же вручную запускать созданный файл на выполнение в SQL Navigator'е. Сейчас же я хочу установить это в автоматический режим. Автомат в моей системе может выполнять Oracle PL/SQL процедуры
Код: plsql
1.
2.
3.
begin
   какие-то действия;
end;



Как это возможно сделать?
Можно ли из sql запустить скрипт на Python?
Или же есть возможность подобным образом распарсить сайт средствами Oracle PL/SQL? И тогда как?
Что будет легче?

Заранее благодарен за любую помощь!
...
Рейтинг: 0 / 0
30.03.2018, 13:19
    #39623250
brzl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из web в таблицу: парсить HTML или запуск стороннего скрипта?
1. utl_http для загрузки страницы в clob, парсинг и вставка в таблицу.

2. cron для запуска скрипта питона, питон кладет данные в csv, База job'ом периодически читает из external table и пишет в таблицу
...
Рейтинг: 0 / 0
30.03.2018, 17:35
    #39623507
brzl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из web в таблицу: парсить HTML или запуск стороннего скрипта?
У external table есть возможность указать обработчик файла, через preprocessor.
Не буду утверждать что сработает, а если и сработает насколько это безопасно, но если указать ваш скрипт в качестве обработчика. Скрипт предварительно изменить чтобы выдавал строки в csv вместо insert
...
Рейтинг: 0 / 0
03.04.2018, 14:53
    #39624899
Мутаген
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Данные из web в таблицу: парсить HTML или запуск стороннего скрипта?
Логичнее всего скрипт доработать и через cx_oracle вставлять данные прямо в базу напрямую.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Данные из web в таблицу: парсить HTML или запуск стороннего скрипта? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]