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?
Vinkki: Älä anna midille ykköstä, vaan katso missä kohdassa se title on instr-funktion avulla.
eli toisinsanoen, miten tuo nyt sitten pitäisi toteuttaa? Ainakaan alkaa = instr(html$, "<title>") ei auttanut asiaan, oli ilmeisesti väärin.
Muistitko vaihtaa myös midin loppumispistettä?
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.
https://www.ohjelmointiputka.net/koodivinkit/
koitas jos tuolla onnistuis käyttö esim näin
text1.text = Erottele(sunhtmltiedostos,"<title>","</title>","
Tuo taas ei tee mitään. text1.text:iin ei tule mitään.
EDIT: Nyt toimii.
juhaz kirjoitti:
Tuo taas ei tee mitään. text1.text:iin ei tule mitään.
EDIT: Nyt toimii.
Toimiko mun koodilla?
Joo tuo erottele-juttu toimii.
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?
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.
ahaa. En ilmeisesti lukenut tarpeeksi hyvin koodia... Nyt se kuitenkin toimii erinomaisesti. Kiitoksia kaikille, jotka ovat neuvoneet.
Aihe on jo aika vanha, joten et voi enää vastata siihen.