Stahovanie XML subor v Pythone

Problematika ohladne regulácií (PI, PID), ovládania pohonov, odmeriavaní veličín, automatizácie PLC

Moderátori: Drakoush, Moderátori

joži
Stály člen
Stály člen
Príspevky: 374
Dátum registrácie: 06 Júl 2014, 10:55
Bydlisko: Lazany

Stahovanie XML subor v Pythone

Príspevok od používateľa joži » 24 Jan 2022, 14:59

Zdravím všetkých.

Momentalne riešim problem zo stahovaním XML suboru z webovej lokality.
Doteraz som subor stahoval prostredníctvom requestu: urllib.request.urlretrieve avšak po zmene zabezpečenia servera z ktorého sa údaje prijímaju mi táto funkcia v Pythone nefunguje, subor sa teda nestiahne. Riešil takýto problém niekto? pozeral som už niečo aj na webe, dozvedel som sa že nie som jediný komu to nefunguje, niečo som poskúšal ale zatial bez výsledku. Python nie je moja šálka kávy....
V´daka za napady, tipy....
0

Používateľov profilový obrázok
Mek
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1271
Dátum registrácie: 15 Okt 2015, 20:49
Bydlisko: Žilina
Vek: 37
Kontaktovať používateľa:

Re: Stahovanie XML subor v Pythone

Príspevok od používateľa Mek » 24 Jan 2022, 17:27

Subor sa nestiahne, a kod pokracuje v behu, len odpoved zo servera je prazdny string? Alebo mas nejaku chybu/exception?
0
... byvaly spravca Hospudky u amplionu, Martinekk-ov brat. Nemam vystudovane elektro, je to len moje hobby. Povolanim som SW inzinier.
Moja databaza suciastok: ELPARTS
Moj velky elektro projekt: MEGA TRANSISTOR CLOCK

joži
Stály člen
Stály člen
Príspevky: 374
Dátum registrácie: 06 Júl 2014, 10:55
Bydlisko: Lazany

Re: Stahovanie XML subor v Pythone

Príspevok od používateľa joži » 25 Jan 2022, 08:23

Ahoj, Dik za reakciu.
momentalne to mám takto:
V nekonečnej slučke stahujem subor každe 2 sekundy cca

try:
urllib.request.urlretrieve(url,xmllocalfile)
except:
print("Chyba pri citani XML z webu")

nasledne overujem či tam subor je alebo nie a podla toho pokračuje program v parsovani.

if not os.path.isfile(xmllocalfile):
continue
try:
e = xml.etree.ElementTree.parse('zwebu.xml').getroot()
.....

lenže neskoči dalej lebo mi cez ten urllib.request.urlretrieve nestiahne to XMLko, takže to stale cykluje kazde 2s (pouzivam time.sleep funkciu v nekonečnej slučke) a snaži sa ho stiahnut....
0

joži
Stály člen
Stály člen
Príspevky: 374
Dátum registrácie: 06 Júl 2014, 10:55
Bydlisko: Lazany

Re: Stahovanie XML subor v Pythone

Príspevok od používateľa joži » 25 Jan 2022, 09:05

tak zistil som že mi stale vyhadzuje chybu overenia:
SSL: CERTIFICATE_VERIFY_FAILED ako v kniznici request.py tak aj v ssl.py
som v koncoch....
0

joži
Stály člen
Stály člen
Príspevky: 374
Dátum registrácie: 06 Júl 2014, 10:55
Bydlisko: Lazany

Re: Stahovanie XML subor v Pythone

Príspevok od používateľa joži » 25 Jan 2022, 10:13

tak zistil so že treba skusit nainštalovat novšiu verziu openssl, tak idem sa s tym mordovať, podám report
0

Daevid
Stály člen
Stály člen
Príspevky: 206
Dátum registrácie: 15 Nov 2007, 00:00

Re: Stahovanie XML subor v Pythone

Príspevok od používateľa Daevid » 25 Jan 2022, 10:47

Pred časom som riešil tiež jeden script v pythone, ktorý používa requests a urllib. Od začiatku som mal problém s overovaním certifikátu stránky. Vyriešil som to tak, že som do

Kód: Vybrať všetko

requests.get(url, data=None, cookies=cookies, verify=False)
pridal "verify=False". To ma za následok, že sa neoveruje dôveryhodnosť certifikátu. Potom už kód len vypisuje varovania. Keď že ale môj kód na webe hľadal celkom veľa dát, tak mi to zbytočne zahlcovalo konzolu s výpisom, tak som vypol aj toto varovanie pridaním

Kód: Vybrať všetko

requests.packages.urllib3.disable_warnings()
na začiatok scriptu.

Záleží teda ako moc je pre teba overovanie certifikátu dôležité. Pre mňa nebolo. Vypínanie varovaní odporúčam až po tom, ako bude script odladený / stabilný...
0

joži
Stály člen
Stály člen
Príspevky: 374
Dátum registrácie: 06 Júl 2014, 10:55
Bydlisko: Lazany

Re: Stahovanie XML subor v Pythone

Príspevok od používateľa joži » 25 Jan 2022, 14:54

Tak nakoniec sa mi to podarilo.
V prvom kroku som sa snažil updatnut openssl na vyššiu verziu, čo sa mi nepodarilo.
Nakoniec som našiel poslednu dostupnu verziu raspberianu a ktora mala v sebe openssl 1.1.1 z 2021 roku a všetko už funguje ako má.
Ak by to niekto riešil v buducnosti tak funguje všetko aj ten request z modulu urllib.request.urlretrieve
2
Obrázok 2

Napísať odpoveď