Excel VBA - Aktualizovaná data z webů Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Donald64
Level 5
Level 5
Příspěvky: 2435
Registrován: říjen 16
Pohlaví: Muž
Stav:
Offline

Excel VBA - Aktualizovaná data z webů

Příspěvekod Donald64 » 04 srp 2019 22:13

Zdravím, před nějakou dobou mi zde někdo pomohl vytvořit VBA skript na tahání dat z webů. Od té doby ale proběhly na cpubenchmark změny kódování webu natolik velké, že si to nedokáži upravit a už se mi neaktualizuje celkové skóre, v excelu je to sloupec "Multi core" (ve VBA je ten úsek zakomentovaný). Zároveň bych ocenil, kdybych měl ještě další sloupeček s informací o dostupnosti komponentu. Okrajově by třeba nebylo od věci vidět, zda se cena daného procesoru zvýšila/snížila a o kolik.

Co je pro mě však mnohem zásadnější je to, nějak ten skriptík optimalizovat. Upravoval jsem si ho totiž pro automatický navrhovač sestav, kde jsem aktualizoval pouze ceny, což trvalo 20s (jen 65 komponentů). Měl jsem v plánu u daných komponentů sledovat i dostupnost a databázi rozšířit klidně na několik set komponentů, což už by trvalo opravdu dlouho a nevím, zda by mi to nepadalo. Říkal jsem si, jestli by třeba nepomohlo data netahat z konkrétních stránek produktů, ale z vyfiltrovaných produktů. Nechám to kompletně na Vás a za každou pomoc budu moc vděčný.
Data.xlsm
(28.1 KiB) Staženo 70 x


Ještě bych měl okrajový dotaz na http odkazy. Když mám v ecelu podmíněnou buňku s odkazem na jinou buňku, která odkazuje na další buňku, kde je zkopírované přesné url webu, jak tuto první buňku přinutím, aby mi dané url jen nevypsala, ale přesměrovala mě přímo na tento web?
► Zobrazit spoiler

Reklama
Donald64
Level 5
Level 5
Příspěvky: 2435
Registrován: říjen 16
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - Aktualizovaná data z webů

Příspěvekod Donald64 » 13 srp 2019 14:46

Koukal jsem ještě na ty údaje o dostupnosti komponent (co lze získat z webu) a informace o stavu zboží je mi nakonec k ničemu. "Na objednání" totiž může znamenat dostupné za dva dny, nebo i dva měsíce a přibližný termín dodání lze aktualizovat jen když jste na czc přihlášeni a navíc je to vázané na vaši lokalitu, takže tohle padá.

Každopádně mé prosby ohledně načtení "Multi core" skóre a fungujícího odkazu i přes několik zástupných buněk stále trvají. Informace o tom, zda se cena oproti předchozímu údaji zvedla/snížila, není nutná, spíše mě zajímalo, zda a jak lze něco obdobného realizovat. Ohledně efektivity onoho VBA makra to byl také spíše dotaz, zda tam probíhá průběžné načítání i mazání a nehrozí přehlcení a pád, případně zda by to šlo řešit i efektivněji. Abyste to nemuseli stahovat, do spoileru přiložím zdroják onoho makra.
► Zobrazit spoiler

Uživatelský avatar
elninoslov
Level 2.5
Level 2.5
Příspěvky: 366
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - Aktualizovaná data z webů

Příspěvekod elninoslov » 19 srp 2019 13:49

Makro je moje. Hromadné načítanie údajov z CZC by sa asi dalo urobiť porovnaním produktov, kde sa kódy produktov vložia rovno do URL, ale musí sa vedieť aspoň jedno ID skupiny. Potom by sa dal snáď rozobrať výsledok, pre každú skupinu produktov. Časová úspora bude v prípade viac produktov z jednej skupiny. Naopak, ak bude po jednom produkte z každej skupiny (typická zostava PC), tak to bude časovo nevýhodné (2x načítanie kódu, najskôr načítanie produktu zistenie jeho skupiny, a potom načítanie porovnania).

CPU skóre, je ešte horšie. Nedá sa vložiť tak jednoducho ID do porovnania (aj tak max 3 CPU), lebo tam treba vybrať aj frekvenciu a presný podtyp. Proste na prd. Riešením by bolo, ak by sa jednalo naozaj o zisťovania CPUMark pre veľa CPU, načítanie tzv. CPU_mega_page (u mňa asi 12 sek), a vyhľadať podľa ID skóre v celkovej tabuľke. A zase platí, že pre menší počet CPU je to časovo nevýhodné.

A keď som pri tej časovej náročnosti, tak naprogramovanie toho čo spomínam je tiež veľmi časovo náročné, a je od Vás pekné, že:
Donald64 píše:Nechám to kompletně na Vás...

:D

Každopádne pozerám, že by sa dalo prehodiť, aby sa stránka CPU marku načítala raz, a všetky 4 údaje sa z nej extrahovali naraz. A stále potrebujete aj tie info Cores/Threads, L1,L2,L3 a pod ?. Jedná sa vždy len o CPU, nič iné? ...

Donald64
Level 5
Level 5
Příspěvky: 2435
Registrován: říjen 16
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - Aktualizovaná data z webů

Příspěvekod Donald64 » 20 srp 2019 00:13

Děkuji za reakci. Všechny údaje k danému CPU jsou čistě orientační, navíc neměnné, takže není potřeba je aktualizovat a v podstatě ani uvádět. CPU Mark skóre je spíše údaj pro mě, reálně chci CPU srovnávat dle FPS v konkrétních hrách a toto skóre (které se mění jen u CPU s malým vzorkem testů) případně využít k přibližnému dopočítání chybějících údajů. Pokud nejde nějak snadno načíst tento údaj z webu, tak to nechme být, jen mi vrtalo hlavou, co do toho řádku napsat, aby to ten údaj přečetlo.

O co se snažím je to, vytvořit obrovskou databázi úplně všech komponentů, která u každého komponentu zohlední nejdůležitější údaje a vybere to nejj cena/výkon k danému CPU (desku, chladič) a GPU (zdroj, case), načež tyto 2 položky kombinuje a odhaduje reálný výkon. Sestava se pak dle ceny (+ dalších parametrů) navrhne sama ta nejlepší, co v současné době lze na hry koupit. Chtěl jsem zohlednit i dostupnost, ale to nepůjde, tak tam nějak udělám možnost alespoň ručně říci, že daný komponent není, aby se vybral jiný. Jenom grafických karet tam může být kolem 200 a tak se celkový počet aktualizovaných cen v tabulce můžu pohybovat i k tisícovce.

V současné době mám takovou provizorní "hloupou" verzi, kde sám rozhoduji, jaké komponenty se aktualizují (jsou nejlepší) a jak se mají kombinovat, ale vzhledem k proměnlivé dostupnosti i výhodnosti (cenám) je to příliš náročné a při větších úpravách se to musí celé předělávat. Chci proto vymyslet něco, co si s tímto poradí samo, ale měl jsem s tím už tolik problémů, že si říkám, jestli má něco podobného vůbec cenu dělat. V reálu se spoustu věcí osazuje intuitivně a najít vhodný způsob, jak komponenty správně ohodnotit není vůbec sranda a dalece přesahuje vše, o co jsem se kdy pokusil. Nehledě na nedostatek dat, chyby v metodikách recenzí, chyby ve výběru vzorků her nebo i překlepy mi tuto práci až neúnosně ztěžují. Nicméně asi nebudu mít klid, dokud to alespoň v nějaké podobě nedotáhnu do konce.

Uživatelský avatar
elninoslov
Level 2.5
Level 2.5
Příspěvky: 366
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - Aktualizovaná data z webů

Příspěvekod elninoslov » 20 srp 2019 02:11

No ale nenapísal ste, či sú teda aj iné komponenty v jednej tabuľke s CPU. Ak áno, tak mi logika stĺpcov vôbec neštimuje, navyše by bolo nutné nejako rozlíšiť, či sa jedná o CPU alebo nie, a ak áno ťahať skóre apod. Ak nie, zasa úplne odinakiaľ úplne iné info. To čo chcete je podľa mňa nereálne. Neviem si dosť dobre predstaviť taký systém.
Na CPU to mám z veľkej časti hotové. Ešte doplniť iný spôsob ťahania z CPUmark pri malom počte položiek. Vy si asi neuvedomujete, aké penzum práce je na takéto niečo potreba. A to je len CPU!

Ruku na srdce - ste schopný si ten kód upraviť či opraviť ?
Nemyslím si, že je tu veľa takých, čo ho pochopia. V žiadnom prípade nikoho nepodceňujem, len poukazujem na neúnosnú náročnosť projektu.
Môžete si to omrknúť.

A ako bonus upozorňujem na nemalú a nemilú maličkosť s ktorou ste sa už stretli - stránky sa menia...
Přílohy
GetWebInfo z CZC a CPUbenchmark.xlsm
(38.39 KiB) Staženo 55 x

Donald64
Level 5
Level 5
Příspěvky: 2435
Registrován: říjen 16
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - Aktualizovaná data z webů

Příspěvekod Donald64 » 21 srp 2019 20:38

To makro vypadá fakt složitě, asi jste velmi chytrý, když dokážete něco podobného naprogramovat, ale já ho bohužel upravit nedokážu. To Vaše staré jsem si upravoval, tady když něco zakomentuji, tak mi to začne házet chyby při kompilaci. To, co jste stvořil je obrovsky náročné a ani já si neumím představit něco podobného napříč všemi komponenty v jedné tabulce, určitě to nebyl a není záměr.
► Zobrazit spoiler

To, o co jste se pokoušel vyžaduje tolik práce, že si to ani neumím představit fungovat. Asi jsme se špatně pochopili, ale mně šlo de facto jen o tahání obrovského množství cen z CZC. Přikládám vzorový soubor s tím, o co mi vlastně celou dobu šlo.
Ceny.xlsm
(72.03 KiB) Staženo 47 x

- Aktualizace se starým makrem trvala 2min a neaktualizovaly se ceny u nedostupných komponentů, které nelze vložit do košíku (což mi i vyhovuje, díky tomu je mohu rozlišit). Zároveň je u nich netradiční informace o nedostupnosti, ale jak říkám, když tam nic nebude, budu přesně vědět, proč a jak s tím naložit.
- U takovéhoto vzorku komponentů by se ale i základní informace o dostupnosti hodila. V <div id="warehouse" class="warehouse">...</div> je uložena informace o stavu zboží, ani není třeba tahat český text zevnitř <span>...</span>, úplně by stačila informace ze třídy "for-order", "on-stock", "not-on-stock".
- Dobu načítání to tuším prodlouží ze 2min na 4min, ale nepadalo mi to, tak to není zase takový problém. Jestli by nebylo náročné pro tyto účely přizpůsobit Váš nový kód, mohlo by to být zajímavé.

V té tabulce s CPU mě pouze zajímalo, jak vytáhnout údaj, který není součástí nějakého atributu, ale je třeba přímo napsaný ve <span>...</span> jako číslo či text. Jednoduše co napsat dovnitř tohoto, aby to šlapalo:
.Columns(12).Value2 = PrecitajOdkazy(XML, Odkazy, 2, "[rating] => ", vbLf)
Dle Vaší původní syntaxe umím vytáhnout údaj uvnitř atributu, ale ne ten, který je jeho součástí. Taktéž umím vytáhnout text, který lze něčím přesně identifikovat ("[rating] => ", vbLf) nikoliv ten, který stojí sám o sobě.

Moc si vážím toho, že mi s tím pomáháte. Bez Vás bych s tím asi nepohnul.

Uživatelský avatar
elninoslov
Level 2.5
Level 2.5
Příspěvky: 366
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - Aktualizovaná data z webů  Vyřešeno

Příspěvekod elninoslov » 22 srp 2019 11:46

28 sekúnd na načítanie cien a dostupnosti. Rýchlejšie to nedám.
Přílohy
Ceny.xlsm
(88.05 KiB) Staženo 63 x

Donald64
Level 5
Level 5
Příspěvky: 2435
Registrován: říjen 16
Pohlaví: Muž
Stav:
Offline

Re: Excel VBA - Aktualizovaná data z webů

Příspěvekod Donald64 » 22 srp 2019 17:21

Páni, to je brilantní nápad, otevřít každý komponent samostatně v porovnávači produktů. Tím se výrazně sníží množství načítaných dat, opadnou potíže s různým zápisem cen i dostupností a to čtení po řádcích, že při aktualizaci obou hodnot se čtení zastaví je výborné. Mockrát Vám děkuji, že by to mohlo fungovat až takhle chytře a efektivně jsem ani nedoufal! Jestli budete chtít, po dokončení Vám pošlu výsledný soubor, ať z toho také něco máte, když jste si se mnou dal tolik práce :-)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • chyba na webu
    od teichmann.ondrej » 04 zář 2023 15:45 » v Programování a tvorba webu
    1
    1781
    od petr22 Zobrazit poslední příspěvek
    04 zář 2023 16:09
  • Jak silné VPS na provoz webů?
    od hufi2301 » 18 kvě 2023 10:23 » v Sítě - hardware
    0
    824
    od hufi2301 Zobrazit poslední příspěvek
    18 kvě 2023 10:23
  • Data z HDD
    od dadlou » 07 dub 2023 11:30 » v Problémy s hardwarem
    2
    886
    od Sigyam Zobrazit poslední příspěvek
    07 dub 2023 15:24
  • Sdílená databáze na webu pro 70 lidí
    od Darth Vader » 14 lis 2023 21:47 » v Programování a tvorba webu
    1
    936
    od kubasCZ Zobrazit poslední příspěvek
    15 lis 2023 07:00
  • USB-C pouze data ? Příloha(y)
    od ski1961 » 08 říj 2023 10:25 » v Rady s výběrem hw a sestavením PC
    4
    2145
    od ski1961 Zobrazit poslední příspěvek
    08 říj 2023 11:40

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů