Já na tom nyní ludvíku pracuju. Sice ne úplně dohloubky, zatím jen tak aby šlo číst tak jako když se to děje manuálním kliknutím - tedy zadáním vstupů a načtení výstupu makrem. Takže nevím za jak dlouho s tím budu hotov, ale myslím že by to mohlo být brzo.
Pro Vás a ostatní úživatele postup těžby z netu přes uživatelské rozhraní :
1. Je nutné mít dobrý browser a i připojení (ale stačí aby bylo stabilní - nemusí to být extra rychlé.)
- to dobrý znamená aby měl ve výbavě nástroje pro vývojáře. Já používám Firefox - ten je asi nejlepší. Proto popíšu postup s Firefoxem - ale možná že to bude fungovat i pro jiné prohlížeče.
2. Otevřu stránky které chci těžit. Samozřejmě se musíte zorientovat co se musí vyplnit a kde se odečte výsledek. Často to bývá v jediném prvku (bývá iznačen IO "io" jako Input - Output). To je ale jedno.
3. Klepnu myší na okénko vstupu a pravým myšítkem zavolám "prozkoumat prvek". Je hned vybraný (vymodřený) a tak stačí Ctrl+C a vložit do sešitu.
4. U výstupů to bývá někdy (zrovna jako v Aresu) tak, že se to dává do nové stránky, respektive se vygeneruje do té doby neviditelný prvek (rámec). Pak máme více možností, ale zase když je od počátku výstupní okno vidět, tak je to stejné jako se vstupy a tím pádem velmi jednoduché.
(například Google translator).
5. Mezi vstupem a výstupem bývá různě dlouhá prodleva. Tady na Aresu je v řádech sekund. To znamená, že se musí výstup iterovat po časových intervelech. Při tom se pro jistotu musí vždy znovu načíst makrem výstupní prvek - to když by došlo k přerušení, nebo pádu na cestě.
To znamená načítat výstup cyklem (nejlépe For ..Next) který obsahuje prodlevu například 5 sekund protože se nesmí stát, aby na server šlo za sebou více dotazů na které by musel server odpovídat úplně stejně.
(Z toho důvodu makro tazatele Filipa obsahuje vypínání obnovování obrazovky). Prostě odbavení na serveru i bez problémů nějaký čas trvá a obávám se, že 1 vteřina je málo - je to ale jistě individuální podle typu serveru, rychlosti připojení a doby zpracování na Vaší (klientské) straně. V neposlední řadě jde o denní či noční hodinu - tedy podle zatížení serveru.)
6. Načtený výsledek ukládáme nejlépe tak, aby šlo cyklem také opakovat hledání ze seznamu, proto výstup nestačí na jeden řádek ale musí se strukturovat podle Vás do různých buněk. To vše aby se daly výsledku ukládat pod sebe - jedno volání na samostatný list jak popisuje Filip je nepraktické.
Postupů se nabízí jak jsem uváděl více a většinou jde o mnohem složitější volání. Ares ale nabízí jedno naopak "hezké" a snadnější.
Je to například přímo tisk. To se mi moc nelíbí, protože pak pomocí JavaSriptu (nebo JS) leze na porty mého počítače, zavolá mojí tiskárnu a zřejmě také spustí tisk (tohle jsem už netestoval, ale stejně bych to asi vytiskl do souboru a raději vykuchal bytovými operacemi.)
Další cestou je dávkové zpracování přes XML - dále ještě nabízí Basic makra (odtud asi Filip to makro vybral). Tedy potvrdilo se jak jsem se domníval - podpora MSO - kolik a kdo dostal za takovéhle upřednostnění? Ale je to v podstate možnost přejinačit to do našeho StarBasicu - Takže lepší než nic.
Nyní se zabývám obecnější cestou - přes uživatelské rozhraní zejména kvůli Filipovi který mne inspiroval k vypínání obrazovky, ale je to univerzální přístup takže je prakticky nepostradatelný - například pro stránky, které takový servis jako je MVCR, respektive MFCR nenabízí.
7. Dále posílám 2 makra. Která sice občas použiju, ale momentálně nevím zda nedělají nějakou rotyku. Čas od času se něco změní a některé makro na příklad na Libre Office napracuje - kvůli změnám. Prakticky jsem je získal na zahraničních fórech a při vyhledávání OpenOfficeBasic, nebo podobně OpenOfficeMacro a snad i jinak. Po hříchu už nevím odkud a kdo je udělal. Snad se na mne autoři nebudou hněvat když by to zjistili (že jsem jejch jména neuvedl).
Makro obecně :
Sub Tezit_NetURL()
Dim oFunc as Object
Dim obsah as String
Dim oUrl as String, oXML as String
Dim oFirma as String, oMesto as String, oAddr as String, oICO as String
Dim oDisp as String
oICO = "203860294"
obsah = oICO
oUrl = "http://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi?ico=" & obsah
oFunc = createUnoService( "com.sun.star.sheet.FunctionAccess" )
oXML = oFunc.callFunction("WEBSERVICE",array(oUrl))
print oXML
'oFirma = oFunc.callFunction("FILTERXML", array(oXML, "" ))
'oMesto = oFunc.callFunction("FILTERXML", array(oXML, "" ))
'oAddr = oFunc.callFunction("FILTERXML", array(oXML, "" ))
'oICO = oFunc.callFunction("FILTERXML", array(oXML, "" ))
End Sub
Je to jen na rychlo upravené abyste viděli že to ARES načítá, ale musí se to dotáhnout. Dejte pozor - hlásí to že můžete být serverem zakázáni - je to kvůli vadným zadáním. Tak pozor ať nejste bloknuti. Podívejte se na portál - podmínky provozu a podobné informace.
Původní makro načítalo ZIP a pak se to samo rozbalilo, ale kde mám původní verzi ví bůh. Zajímavé je to tím, že využívá WEBSERVICE - tedy funkci, která je implementovaná do sešitu jako vzorec.
[code]Function GetGeoData(sSearch as String) as String '
If Len(sSearch) = 0 Then Exit Function 'we dont need empty cells <img src="http://s.w.org/images/core/emoji/72x72/1f609.png" alt="
Editoval neutr (9. 3. 2016 17:08:32)
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ