Parsování HTML. Pro účely testování jsem vytvořil stránku parsovani.html. Zdrojový kód:

Podobné dokumenty
HTML - Úvod. Zpracoval: Petr Lasák

Tvorba webových stránek

Programování v jazyce JavaScript

(X)HTML, CSS a jquery

TNPW1 Cvičení aneta.bartuskova@uhk.cz

13. Vytváření webových stránek

12. Základy HTML a formuláře v HTML

Vývoj Internetových Aplikací

Tvorba webových stránek

NSWI096 - INTERNET. Úvod do HTML

HTML XHTML JavaScript PHP ASP.Net Zajímavé odkazy

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Formuláře. Internetové publikování. Formuláře - příklad

NSWI096 - INTERNET. CSS kaskádové styly. Mgr. Petr Lasák

25. TVORBA HTML DIALOGŮ PRO PEVNÉ TVARY

Mgr. Vlastislav Kučera Struktura stránky, hlavička,

Nová struktura souborů a složek

Základy programovacího jazyka HTML. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1133_Základy programovacího jazyka HTML_PWP

Různé barvy v grafu pro skutečnost a plán

(X)HTML-TAGY. VOŠ a SŠT Česká Třebová

Tvorba www-stránek. Příkazy jazyka HTML. Budeme pracovat následovně: Základní struktura webové stránky. Příkazy sekce HEAD

Zá klady HTML. Tag HTML <HTML> Párová značka, který definuje webovou stránku. Obsah stránky končí značkou

HTML Hypertext Markup Language

Standardní šířka sloupce je průměrná šířka číslic 0-9 standardního písma.

Mgr. Vlastislav Kučera lekce č. 2

Mgr. Vlastislav Kučera přednáška č. 2

Tvorba WWW stránek. Mojmír Volf

Obsah. Stručná historie World Wide Webu 7

IE1 jazyk HTML a kaskádové styly

Čtvrtek 11. dubna. Základy HTML. Obecná syntaxe HTML. Struktura HTML

<html> - párový tag, uzavírá celý dokument <head> - párový, určuje hlavičku dokumentu <body> - párový, uzavírá tělo dokumentu Př. Základní struktura

IE1 jazyk HTML a kaskádové styly

TNPW1 Cvičení aneta.bartuskova@uhk.cz

Úvod do tvorby internetových stránek v jazyce HTML

Základy HTML. Obecná syntaxe HTML. Struktura HTML

CSS Stylování stránek. Zpracoval: Petr Lasák

Internet 1 vývoj, html, css

Tvorba fotogalerie v HTML str.1

Tvorba internetových stránek

Hlavička dokumentu. mezi <head> a </head> obsahuje informace vztažené k dokumentu metadata <title> - název stránky, povinná párová značka

VÝŘEZ OBLASTI BUNĚK VZORCEM

Název: VY_32_INOVACE_PG4120 Literatura, online zdroje informací, testy

Název DUM: VY_32_INOVACE_2B_14_ Programovací_jazyk_HTML

NSWI096 - INTERNET JavaScript

Informatika pro moderní fyziky (8) Javascript, CSS - stylování dokumentů, SVG - tvorba obrázků, složitější interaktivní dokument

Základy HTML (2. přednáška)

<!DOCTYPE html> <html lang="cs"> <head> <meta charset="utf-8" /> <title>název stránky v titulkovém pruhu prohlížeče</title> </head>

Inovace výuky prostřednictvím šablon pro SŠ

MS Excel makra a VBA

Na úvod tip, jak kontrolovat šířku tabulky před a po změně. Chování makra ukazují obrázky. Jak změnit rastr v hotové tabulce Excelu

Spojování textových řetězců na listu

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

Tabulka aneb Seznam čili ListObject

Odstavení automatického zpracování hypertextových odkazů

Základy informatiky. 03, HTML, tvorba WWW stránek. Daniela Szturcová Část převzata z přednášky P. Děrgela

Název modulu: Tvorba webu pomocí XHTML a CSS začátečníci

Empty, Null, Nothing, Missing, prázdný řetězec a buňka

CSS Kaskádové styly. formátování webových stránek

Programování v jazyce JavaScript

Tvorba webových stránek pomocí HTML kódu v příkladech. M. Seménka, 2014

Tabulka obsluhovaná kódem VBA

Úvod do jazyka HTML (Hypertext Markup Language)

<link> - definuje vztah k jiným XHTML dokumentům, typicky

Tvorba webových stránek

Tomáš Herout

Pole jinak ArrayList ve VBA

Hromadná změna datumu a času v buňkách

Návrh stránek 4IZ228 tvorba webových stránek a aplikací

MS Excel Základy maker. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU

Tvorba stránek v HTML ve Wordu

KIV/PIA 2012 Ing. Jan Tichava

Tvorba WWW stránek. Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17. listopadu

CSS (Cascading Sytle Sheets) neboli kaskádové styly vznikly jako souhrn metod pro úpravu vzhledu stránek.

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

HTML - pokračování. Co už víme?

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Informatika pro moderní fyziky (8) CSS - stylování dokumentů, SVG - tvorba obrázků, složitější interaktivní dokument

Internetové technologie, cvičení č. 5

Rotace, transpozice a zrcadlení matice hodnot

Stránka se dá otevřít dvěma způsoby

Buňka tabulky; tento tag doporučuju psát opět jako párový. Nyní již máme dostatek informací k tomu, abychom dokázali sestrojit jednoduchou tabulku.

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Jak vložit obrázek do oblasti buněk

1. Struktura stránky, zásady při psaní kódu, MVC pattern. Web pro kodéry (Petr Kosnar, ČVUT, FJFI, KFE, PINF 2008)

Specifikace ASYMBO XML feedu

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

V článku Skrytý obsah na listu (1) jsme se zabývali obecnými možnosti skrývání obsahu. Dnes se na dané téma podíváme prakticky.

Článek je napsán pro českou verzi Excelu 2010, ale věřím, že i v jných verzích si dovedete poradit.

Základy informatiky. 03 HTML, tvorba webových stránek. Kačmařík/Szturcová/Děrgel/Rapant

Tvorba jednoduchých WWW stránek. VŠB - Technická univerzita Ostrava Katedra informatiky

K práci budeme využívat souborového manažeru Unreal Commander alespoň si ho procvičíme

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Ajax - úvod. Klíčové pojmy: Ajax, skriptování na straně klienta a serveru, objekt XMLHttpRequest, DOM model.

OBSAH Úvod do VBA... 6 K čemu VBA... 6 Když VBA nestačí... 6 Historie Visual Basicu... 7 Objektový model, vlastnosti, metody, události a funkce...

Star Trek Do temnoty (infografika na panelu)

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Kaskádové styly základy grafiky

Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Transkript:

Parsování HTML představuje slangový výraz pro syntaktickou analýzu obsahu webové stránky. Lidově řečeno porcujeme zdrojový kód stránky a vyzobáváme potřebný obsah. Webovým vývojářům není neznámý pojem HTML DOM (Document Object Model). Ten je popsán konsorciem W3C (http://www.w3schools.com/jsref/dom_obj_document.asp) a umožňuje spravovat obsah stránky s pomocí javascriptu. Ačkoliv je možné brát inspiraci přímo z něj, v případě VBA se odvoláváme na starší knihovnu Microsoft HTML Object Library, v níž jsou některé vlastnosti definovány odlišně (outerhtml, innertext aj.). Každopádně výhodu mají ti, kteří se již potkali s vytvářením stránek v jazyce HTML a ovládají práci s tagy (elementy), jako je např. <body>, <div>, <p>, <table>, jejich atributy (vlastnostmi) a stylováním (CSS). Pro účely testování jsem vytvořil stránku parsovani.html. Zdrojový kód: <!DOCTYPE html> <html> <head> <title>moje stránka</title> <meta charset="utf-8"/> <style> table { border-collapse: collapse; } table, td, th { border: 1px solid #CCCCCC; }.moje_trida { color: #0066CC; } </style> </head> <body> <p><input name="muj_nazev" type="text" value="excel 2010"/></p> <p id="muj_identifikator" style="color: #FF0066">Element P s atributem id="muj_identifikator".</p> <div class="moje_trida"> <p>element P v prvním elementu DIV s atributem class="moje_trida" (index 0).</p> </div> Excelplus.NET 1

<div class="moje_trida"> <p>element P ve druhém elementu DIV s atributem class="moje_trida" (index 1).</p> </div> <table> <tr> <td>křížek</td> <td>123,45</td> <td>20.11.2015</td> </tr> <tr> <td>bydžovský</td> <td>678,90</td> <td>1.6.2016</td> </tr> </table> <p><a href="http://www.ceskatelevize.cz/ct1/" target="_blank"><img alt= "Logo ČT1" height="83" src="ct1.jpg" width="155"/></a><br /> <a href="http://www.ceskatelevize.cz/ct2/" target="_blank"><img alt= "Logo ČT2" height="83" src="ct2.jpg" width="155"/></a></p> </body> </html> A nyní už si pojďme obsah stránky rozebrat programově. Kód je taktéž uveden v příloze a doporučuji jej krokovat a studovat v oknech Immediate a Locals. Sub ParsovaniHTML() 'Tools / References / Microsoft HTML Object Library Dim objmshtml As New HTMLDocument Dim objdocument As HTMLDocument Dim objimages As IHTMLElementCollection Dim objlinks As IHTMLElementCollection Dim objelements As IHTMLElementCollection Dim objtags As IHTMLElementCollection Dim objtagstagname As IHTMLElementCollection Dim objtagsclass As IHTMLElementCollection Dim objtagsname As IHTMLElementCollection Excelplus.NET 2

Dim objimage As IHTMLImgElement Dim objlink As IHTMLAnchorElement Dim objtagclass As IHTMLElement Dim objtagname As IHTMLElement Dim objtagid As IHTMLElement 'přesnější typy vyplývající z testování 'Dim objtagclass As IHTMLDivElement 'Dim objtagname As IHTMLInputElement 'Dim objtagid As IHTMLParaElement Dim objhtml As IHTMLHtmlElement Dim objhead As IHTMLHeadElement Dim objbody As IHTMLBodyElement Dim strurl As String Dim strtitulek As String Dim strhtml As String Dim strhead As String Dim strbody As String 'adresa stránky strurl = "http://excelplus.net/test/parsovani.html" 'element... tag 'dokument Set objdocument = objmshtml.createdocumentfromurl(strurl, vbnullstring) 'čekání na stažení While objdocument.readystate <> "complete" DoEvents Wend 'titulek stránky strtitulek = objdocument.title Excelplus.NET 3

'objekt HTML (element html) Set objhtml = objdocument.documentelement strhtml = objhtml.outerhtml 'hlavička (element head) Set objhead = objdocument.head strhead = objhead.outerhtml 'obsah stránky (element body) Set objbody = objdocument.body strbody = objbody.outerhtml 'kolekce obrázků (elementy img) Set objimages = objdocument.images For Each objimage In objimages Debug.Print objimage.outerhtml Debug.Print objimage.getattribute("href") Next 'kolekce hypertextových odkazů (elementy a) Set objlinks = objdocument.links For Each objlink In objlinks Debug.Print objlink.outerhtml Debug.Print objlink.innerhtml Debug.Print objlink.getattribute("href") Next 'varianta 1 pro tagy 'kolekce elementů Set objelements = objdocument.all 'kolekce elementů s požadovaným názvem (p) Set objtags = objelements.tags("p") 'varianta 2 Excelplus.NET 4

'kolekce elementů s požadovaným názvem (p) Set objtagstagname = objdocument.getelementsbytagname("p") 'element s atributem id (id="muj_identifikator") 'ID by mělo být v dokumentu jedinečné Set objtagid = objdocument.getelementbyid("muj_identifikator") 'typ nalezeného elementu 'P strelement = objtagid.tagname 'získání barvy atributu style nalezeného elementu (style="color:...") '#ff0066 strcolor = objtagid.style.color 'kolekce elementů s požadovaným atributem class (class="moje_trida") Set objtagsclass = objdocument.getelementsbyclassname("moje_trida") For Each objtagclass In objtagsclass Debug.Print objtagclass.tagname Debug.Print objtagclass.outerhtml Debug.Print objtagclass.innerhtml Next 'kolekce elementů (zpravidla elementy input) 's požadovaným atributem name (name="hledaný řetězec") Set objtagsname = objdocument.getelementsbyname("muj_nazev") For Each objtagname In objtagsname Debug.Print objtagname.tagname Debug.Print objtagname.outerhtml Debug.Print objtagname.getattribute("value") Next 'odstranění z paměti Set objdocument = Nothing Set objmshtml = Nothing Excelplus.NET 5

End Sub Řádky VBA jsem se snažil komentovat a na tomto místě jen upřesním pojmy innerhtml, innertext a outerhtml. Příklad <div><p>nějaký text</p></div> <div><p>nějaký text</p></div> vlastnost outerhtml pro element <div> <p>nějaký text</p> vlastnost innerhtml pro element <div> nějaký text vlastnost innertext pro element <p> Pozn. Pokud se chcete odkazovat na členy kolekcí indexem, pak vězte, že číslování začíná nulou. Přirozeně se sluší na tomto místě ukázat způsob, jak z dané stránky převzít tabulku do listu Excelu (ačkoliv prosté HTML tabulky je lepší načítat prostřednictvím karty Data / Z webu). Sub ParsovaniTabulkyHTML() Dim objmshtml As New HTMLDocument Dim objdocument As HTMLDocument Dim objtagsrow As IHTMLElementCollection Dim objtagscell As IHTMLElementCollection Dim objtagrow As IHTMLTableRow Dim objtagcell As IHTMLTableCell Dim strurl As String 'adresa stránky strurl = "http://excelplus.net/test/parsovani.html" 'dokument Set objdocument = objmshtml.createdocumentfromurl(strurl, vbnullstring) 'čekání na stažení While objdocument.readystate <> "complete" DoEvents Wend Excelplus.NET 6

'všechny řádky tabulky Set objtagsrow = objdocument.getelementsbytagname("tr") 'pro každý řádek For Each objtagrow In objtagsrow 'všechny buňky řádku Set objtagscell = objtagrow.getelementsbytagname("td") 'čítač pro řádky i = i + 1 For Each objtagcell In objtagscell 'čítač pro sloupce j = j + 1 'zápis do buněk listu Select Case j Case 1 'text Cells(i, j).value = objtagcell.innertext Case 2 'desetinné číslo Cells(i, j).value = CDbl(objTagCell.innerText) Case 3 'datum Cells(i, j).value = CDate(objTagCell.innerText) End Select Next objtagcell 'reset čítače pro sloupce j = Next objtagrow 'odstranění z paměti Excelplus.NET 7

Set objdocument = Nothing Set objmshtml = Nothing End Sub Tabulka převedená z HTML stránky HTML stránky by do jisté míry měly dodržovat hierarchii objektů a jejich vnořování do sebe. V praxi tomu tak často není a jejich obsah bývá uspořádán laxně, na rozdíl třeba od XML. Je to jeden z důvodů, proč i já jsem v daném tématu nevyužil skutečnosti, že tagy (elementy) představují jakési nody ve stromové struktuře, kdy uvažujeme vazby rodič (parent) dítě (child), případně děti (children). Parsování HTML stránek nepatří k technikám, za které bychom se mohli plácat po ramenou. Pokud máme možnost, vždy sáhneme po přímém přístupu k datům do databáze. Klíčové je slovíčko pokud. Až příliš dobře se pamatuji na nutnost zpracovat 60 000 webových stránek z nejmenovaného webu státní správy jen proto, že webová aplikace padala pod deseti minutách nastavování parametrů (bez možnosti uložení). Poměrně solidně se s HTML kódem umí vypořádat i regulární výrazy. Ke zpracování webových stránek a jejich obsahu se opět někdy vrátíme. Příloha excel_parsovani_html.zip Excelplus.NET 8