Skip to content

Commit db5db07

Browse files
committed
Updated. Added "cookies.txt" file for access to API
1 parent ad01092 commit db5db07

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

cbr_ru/xml_metall/config.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
DIR_LOGS = DIR / 'logs'
1818
DIR_LOGS.mkdir(parents=True, exist_ok=True)
1919

20+
FILE_COOKIES = DIR / 'cookies.txt'
21+
2022
# TOKEN_FILE_NAME = DIR / 'TOKEN.txt'
2123
#
2224
# try:

cbr_ru/xml_metall/parser.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,26 @@
1212
import requests
1313
from bs4 import BeautifulSoup, Tag
1414

15-
from config import START_DATE
15+
from config import START_DATE, FILE_COOKIES
1616

1717

1818
decimal.getcontext().prec = 2
1919

20+
session = requests.session()
21+
22+
# NOTE: Зачем-то сайт с API добавил проверку на роботов, возможно, много запросов, а менять
23+
# работу сайта, добавляя API-key было сложно или много по времени
24+
# Example:
25+
# __ddgid=r6nn<...>4W; __ddg2=u5rq<...>wV9; __ddg1=gzBn<...>82mir; __ddgmark=W6X<...>owfI; __ddg5=ocM<...>tvM
26+
if FILE_COOKIES.exists():
27+
try:
28+
cookies_text = FILE_COOKIES.read_text('utf-8')
29+
for x in cookies_text.split('; '):
30+
name, value = x.split('=', maxsplit=1)
31+
session.cookies.set(name, value)
32+
except:
33+
pass
34+
2035

2136
class AutoName(enum.Enum):
2237
def _generate_next_value_(name, start, count, last_values):
@@ -88,7 +103,7 @@ def get_metal_rates(date_req1: DT.date, date_req2: DT.date) -> list[MetalRate]:
88103
'date_req1': get_date_str(date_req1),
89104
'date_req2': get_date_str(date_req2),
90105
}
91-
rs = requests.get('http://www.cbr.ru/scripts/xml_metall.asp', params=params)
106+
rs = session.get('http://www.cbr.ru/scripts/xml_metall.asp', params=params)
92107
rs.raise_for_status()
93108

94109
root = BeautifulSoup(rs.content, 'html.parser')

0 commit comments

Comments
 (0)