Načítání dat z www stránek   zodpovězená otázka

VB.NET, .NET

Dobrý den,

v této oblasti se neorientuji a tak bych se rád poradil, jestli by by jste mě nemohli nasměrovat jak vyřešit načítání nějakých hodnot z www stránky. Jedná se cizí stránku/y takže bych si musel vytvořit nějakou šablonu. Hodnoty by měly být načítány do klientské aplikace.

Přdem děkuji za rady

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přidávám ukázku jednoho řádku s hodnotami o které se mi jedná:

</span> </td> <td class="alt1 espace" style="text-align: center;" nowrap="nowrap"> <span class="smallfont">1:30</span> </td> <td class="alt1 espace" style="text-align: center;"><span class="smallfont">AUD</span></td> <td class="alt1 espace" style="text-align: center; padding-top: 2px"><div class="cal_imp_high" title="High Impact Expected"></div></td> <td class="alt1 espace"> <div class="smallfont" style="padding-left: 11px;">Building Approvals m/m</div> </td> <td class="alt1 espace" style="text-align: center;" nowrap="nowrap"> <span id="detail_load_12820"></span> <script type="text/javascript"> <!--
detail_loader[detail_loader.length] = new Array('detail_load_12820', '12820', 'Open Detail', '8', '1');
--> </script> </td> <td class="alt1 espace" style="text-align: center;" nowrap="nowrap"> <span class="worse"><div class="smallfont">-12.8%</div></span> </td> <td class="alt1 espace" style="text-align: center;"><span class="smallfont">-1.4%</span></td> <td class="alt1 espace" style="text-align: center;"><span class="better"><div class="smallfont" title="Revised From -5.4%">-3.1%<img src="images/misc/calendar_previous_revised.gif" alt="" title="Revised From -5.4%" /></div></span></td> </tr><tr id="detail_row_seek_12819"> <td class="alt1 espace" style="text-align: center;" nowrap="nowrap"> <span class="smallfont">1:30</span> </td> <td class="alt1 espace" style="text-align: center;"><span class="smallfont">AUD</span></td> <td class="alt1 espace" style="text-align: center; padding-top: 2px"><div class="cal_imp_high" title="High Impact Expected"></div></td> <td class="alt1 espace"> <div class="smallfont" style="padding-left: 11px;">Trade Balance</div> </td> <td class="alt1 espace" style="text-align: center;" nowrap="nowrap"> <span id="detail_load_12819"></span> <script type="text/javascript"> <!--
detail_loader[detail_loader.length] = new Array('detail_load_12819', '12819', 'Open Detail', '8', '1');

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obsah stránky si načtete do řetězce a pak to rozparsujete pomocí funkcí pro práci s řetězci nebo pomocí regulérních výrazů. Jaká otázka, taková odpověď ;))

Pravděpodobně se pokusíte pokračovat dotazem "Jak načtu obsah stránky do řetězce"? HLEDEJTE. Je to i tady na serveru jako příklad.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Předně:

Proč se pozastavujete nad mojí otázkou? Je na tom něco špatného, když jsem napsal, že se v této oblasti neorientuji? Jaký je potom tedy smysl tohoto fóra? V předhánění se kdo je lepší programátor? Nechtěl jsem po nikom hotové řešení nebo rovnou celý kód, ale pouze nasměrování na co konkrétně se mám zaměřit, abych tento problém mohl vyřešit.

I tak děkuji za Vaši odpověď

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Předně:

Smyslem tohoto fóra je, abyste si jej prohledal, a ne abychom Vám tady dokola psali: "Tohle se tu řešilo".

Dále, pokud budete chtít fundované odpovědi, naučte se správně ptát v diskusích. To se taky řešilo mockrát. Součástí správné otázky je například seznam toho, co už jste udělal než jste ji položil do fóra. Seznam toho, co si myslíte, že by se mělo udělat a seznam toho, co Vám nefunguje, když to zkusíte.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Vážím si všech odpovědí a těch kteří si dají tu práci s jejich napsáním a proto nechci nějak útočit.

Jen jak jsem psal výše. Šlo mi o nasměrování. Pokud se v olasti neorientuji, poněkud obtížně se mi i vyhledává odpovídající téma či sestavuje správný dotaz. Jde o to, že když chci něco nastudovat musím nejdříve vůbec vědět co přesně studovat, jaké téma. Často je problematika rozsáhlá a zahrnuje více oblastí. Nechtěl jsem dopodrobna studovat kompletně celou problematiku webových stránek.

Přeji hezký den

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Takže jsem zapátral a prozatím jsem zjistil následující:

Je třeba vyřešit dva hlavní problémy:

1.načíst data ze stránky

2.nějak ta data zpracovat

add 1.

použít HttpWebRequest

nebo WebBrowser

add 2.

jak bylo řečeno je možné jít cestou práce s řetězci

nebo použít nějaký parser. Vlastní či některý z volně dostupných(viz. např. http://www.vbnet.cz/forum-tema--392-jak_...

Tímto jsem již vyřešil co jsem potřeboval.

Díky za odpovědi.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Kdysi jsem něco podobného dělal a celkem jednoduchá metoda pro stažení stránky vypadala asi takhle:

Public Function nactiStranku(ByVal url As String) As String

        ' úprava adresy
        If url.Substring(0, 7) <> "http://" Then
            url = url.Insert(0, "http://")
        End If

        'vytvoření požadavku na stránku
        Dim req As Net.HttpWebRequest = CType(Net.WebRequest.Create(url), Net.HttpWebRequest)

        ' stažení stránky
        Dim resp As Net.HttpWebResponse

        Try
            resp = req.GetResponse()
        Catch ex As Net.WebException
            Return ex.Message
        End Try

        'převod stránky ze streamu do řetězce
        Dim reader As New IO.StreamReader(resp.GetResponseStream())
        nactiStranku = reader.ReadToEnd()
        reader.Close()
    End Function

Pokud funkci zavoláte s platnou URL adresou, pak Vám vrátí řetězec s obsahem celé stránky.

No a dále již záleží pouze na tom, co konkrétně hledáte (já hledal nějaké měnící se hodnoty v jinak stejné stránce, tak jsem si nalezl na stránce vždy výskyt nějakého pevného řetězce, který mé hodnotě předcházel, no a pak jsem si přečetl to, co následovalo)

Vše jsem dělal pomocí funkcí pro práci s řetězci, dnes bych to asi mnohem elegantněji řešil regulárními výrazy - viz článek T. Jechy.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

O parsování si přečtětě http://vbnet.cz/clanek--122-regularni_vy...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro práci s řetězci si doporučuji přečíst tento článek: http://www.vbnet.cz/clanek--45-vb_net_od...

A pro stažení souboru z netu: http://www.vbnet.cz/forum-tema--1570-sta...

Uložený soubor už jednoduše můžeš načíst pomocí kódu

Dim soubor As New IO.StreamReader("c:\soubor.txt")
Dim TextSouboru As String = soubor.ReadToEnd() 'načte celý soubor do proměnné TextSouboru
soubor1.Close() 'zavřít soubor

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Načíst celý soubor do stringu jde jednodušeji:

Dim text As String = System.IO.File.ReadAllText("c:\soubor.txt")

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Zase jsem se přiučil něco nového

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback