Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: web spider +VB

Sivun loppuun

juhaz [02.05.2006 21:24:17]

#

Olen tehnyt ohjelman, joka avaa tällä hetkellä omalla koneella sijaitsevan html-tiedoston ja hakee sieltä titlen, keywordsin ja descriptionin ja käytän tälläistä koodia:

Open "D:\web_spider\sivu.html" For Input As #1
Do
Line Input #1, html$
html$ = LCase(html$)
Text1.Text = Text1.Text & vbCrLf & html$
If Mid(html$, 1, 7) = "<title>" Then Label4.Caption = Replace(LTrim(RTrim(Mid(html$, 8, 300))), "</title>", "")
If Mid(html$, 1, 31) = "<meta name=" & Chr(34) & "keywords" & Chr(34) & " content=" & Chr(34) Then Label5.Caption = Replace(LTrim(RTrim(Mid(html$, 32, 300))), Chr(34) & ">", "")
Loop Until EOF(1)
Close #1

Tuo toimii ihan oikein jos title tai meta name alkavat ihan tiedoston alusta (siis ei ensimmäisiltä riveiltä välttämättä, mut... kai ymmärsitte mitä tarkoitin?) niin entä jos ne alkavatkin esimerkiksi yhden tabulaattorin päästä? Silloin tuo koodi ei toimikkaan. Mitenkäs minä saan sen toimimaan?

sooda [02.05.2006 21:38:41]

#

Vinkki: Älä anna midille ykköstä, vaan katso missä kohdassa se title on instr-funktion avulla.

juhaz [02.05.2006 21:48:39]

#

eli toisinsanoen, miten tuo nyt sitten pitäisi toteuttaa? Ainakaan alkaa = instr(html$, "<title>") ei auttanut asiaan, oli ilmeisesti väärin.

Megant [02.05.2006 21:58:34]

#

Muistitko vaihtaa myös midin loppumispistettä?

juhaz [02.05.2006 22:09:18]

#

laitoin näin:

If Mid(html$, alkaa, alkaa + 7) = "<title>" Then Label4.Caption = Replace(LTrim(RTrim(Mid(html$, alkaa + 8, 300))), "</title>", "")

ei toiminut. Valittaa mm. Invalid procedure call or argument.

tesmu [02.05.2006 22:59:54]

#

https://www.ohjelmointiputka.net/koodivinkit/24825-vb6-erottelija

koitas jos tuolla onnistuis käyttö esim näin

text1.text = Erottele(sunhtmltiedostos,"<title>","</title>","")

juhaz [02.05.2006 23:35:54]

#

Tuo taas ei tee mitään. text1.text:iin ei tule mitään.

EDIT: Nyt toimii.

tesmu [03.05.2006 11:42:07]

#

juhaz kirjoitti:

Tuo taas ei tee mitään. text1.text:iin ei tule mitään.

EDIT: Nyt toimii.

Toimiko mun koodilla?

juhaz [03.05.2006 11:58:52]

#

Joo tuo erottele-juttu toimii.

juhaz [03.05.2006 14:45:29]

#

nyt tosin ilmeni yksi ongelma...

minulla on käytössä tälläinen rivi:

Text4.Text = Erottele(Text5.Text, "<a href=" & Chr(34), Chr(34) & ">", "")

niin se text4:n sisältö on yhteenpötköön eli tyyliin:

http://www.sivu1.comhttp://www.sivu2.comhttp://www.sivu2.com/jokusivu

eikä auta splitit eikä crlf:t. Mahtaakohan olla mitään keinoa erotella linkkejä toisistaan?

Megant [03.05.2006 14:57:18]

#

Tesmun koodissa on tälläinen kohta:

Erottele = Erottele + b(c + 1) & Detlimiter ' mikäli on enemmän eroteltavaa kuin yksi niin silloin palautetaan teksti yhtenä muuttujana Itsevalittavalla erottimella erotettuna

Ja tuon Erottele-funktion esittely on seuraavanlainen

Public Function Erottele(Eroteltava As String, St As String, En As String, Detlimiter As String) As String

Tuon viimeinen parametri lisätään aina jokaisen eri osan väliin.
Eli kutsu tuota näin:

Text4.Text = Erottele(Text5.Text, "<a href=" & Chr(34), Chr(34) & ">", " ")

Ja sen pitäisi toimia.

juhaz [03.05.2006 15:33:29]

#

ahaa. En ilmeisesti lukenut tarpeeksi hyvin koodia... Nyt se kuitenkin toimii erinomaisesti. Kiitoksia kaikille, jotka ovat neuvoneet.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta