Avatar billede pnr Nybegynder
10. januar 2003 - 10:23 Der er 47 kommentarer og
1 løsning

Hente og vise information fra en anden hjemmeside

Kan jeg lave en side hvor viser f.eks alle overskrifter fra www.bt.dk. Dvs. at jeg  automatisk skal have siden til at hente overskrifterne på BT's side.
Avatar billede dgivoni Nybegynder
10. januar 2003 - 10:27 #1
Ja, det kan du godt. Det kaldes screenscraping og du kan laese mere om hvordan man goer her:
- http://www.aspalliance.com/chrisg/default.asp?article=54
- http://www.4guysfromrolla.com/webtech/102401-1.shtml
Avatar billede pnr Nybegynder
10. januar 2003 - 11:26 #2
Jeg takker :-)
Avatar billede dgivoni Nybegynder
10. januar 2003 - 11:34 #3
det var saa lidt :-)

/David
Avatar billede papman Nybegynder
10. januar 2003 - 12:37 #4
Jeg har også kigget på de 2 links men jeg kan kun få den til at hente hele side ind ? Har du fået din version til at virke (som kun henter overskrifter)

Mvh. PAPman
Avatar billede burningice Nybegynder
10. januar 2003 - 14:51 #5
papman>> så lad dog vær med at accepter svaret før du ved det virker !

ang. screenscraping, så virker det helt fint, hvis man følger instruktionerne på de sider der er blevet linket til. Det er dog op til dig, kun at vise de ting, fra siden du henter, på din egen hjemmeside og her kan kendskab til lidt RegExp være rimelig handy

http://www.google.com/search?sourceid=navclient&ie=UTF-8&oe=UTF-8&q=regexp+asp
Avatar billede dgivoni Nybegynder
10. januar 2003 - 15:35 #6
cyberfessor>> det var ikke papman der stillede spoergsmaalet ;-)
Avatar billede papman Nybegynder
13. januar 2003 - 10:16 #7
I dittet do nothing :-)
Tak dginoni for at gøre cyberfessor opmærksom på det.
Avatar billede burningice Nybegynder
13. januar 2003 - 17:06 #8
wops... endnu engang navneforvirring... sorry papman.
Avatar billede papman Nybegynder
13. januar 2003 - 17:09 #9
Det går an cyberfessor men jeg forstår det ikke helt...
Hvordan man kun få et element fra side ind - hvis du kan løse skal jeg nok tilgive dig *GGG*
Avatar billede burningice Nybegynder
13. januar 2003 - 17:17 #10
du kan f.eks. bruger Instr

lad os sige at du vil have det der står imellem <title> og </title> ud

'str er den side vi har loadet ind
'først finder vi index for <title>'tagget
intStart = Instr(str, "<title>")

'gå kun videre hvis det rent faktisk blev fundet
If instStart > 0 Then
    'vi lægger lige 6 til, da vi jo kun skal have den tekst der kommer efter >'et
    intStart = intStart + 6
    'så skal vi finde index for sluttagget, altså </title>... bemærk at vi begynder fra starten af tagget, og ikke fra starten af siden
    intSlut = InStr(intStart, str, "</title>")
    'og så er det bare at skrive titlen ud
    strTitle = Mid(str, intStart, intSlut)
    Response.Write(strTitle)
Else
    'Hvis index = 0, så er det fordi den ikke fandt <title>
    Response.Write("Der var ikke noget titletag på siden")
End If
Avatar billede papman Nybegynder
13. januar 2003 - 17:21 #11
AAAHHHH TAK nu begynder jeg at forstå det! Jeg printer lige og så høre du fra mig imorgen ;-)
Avatar billede burningice Nybegynder
13. januar 2003 - 17:24 #12
:) np
Avatar billede papman Nybegynder
14. januar 2003 - 10:29 #13
Godmorgen cyberfesser så er jeg her på pinden igen!
Det virker (næsten) Jeg får bla4 bla5 bla6 med - kan du se hvorfor ?

str = "bla1 bla2 bla3 <title> testing </title> bla4 bla5 bla6 bla7 bla8 bla9 "
'først finder vi index for <title>'tagget
intStart = InStr(str, "<title>")

'gå kun videre hvis det rent faktisk blev fundet
If intStart > 0 Then
    'vi lægger lige 7 til, da vi jo kun skal have den tekst der kommer efter >'et
    intStart = intStart + 7
    'så skal vi finde index for sluttagget, altså </title>...
    'bemærk at vi begynder fra starten af tagget, og ikke fra starten af siden
    intSlut = InStr(intStart, str, "</title>")
    'og så er det bare at skrive titlen ud
    'strTitle = Mid(str, intStart, intSlut)
    Response.Write(strTitle)
Else
    'Hvis index = 0, så er det fordi den ikke fandt <title>
    Response.Write("Der var ikke noget titletag på siden")
End If
Avatar billede burningice Nybegynder
15. januar 2003 - 11:18 #14
ops... en lille fejl fra min side...

strTitle = Mid(str, intStart, intSlut)

skal være

strTitle = Mid(str, intStart, intSlut - intStart)

http://www.burningice.dk/eksperten.dk/303373/
Avatar billede papman Nybegynder
15. januar 2003 - 13:31 #15
Super nu virker det... Vil du have lidt points for det ?
Hvad er dit icq nr / messenger ?
Avatar billede burningice Nybegynder
15. januar 2003 - 22:57 #16
pointsene er sq lige meget... ang. icq kan du finde mig på 11521877
Avatar billede pnr Nybegynder
16. januar 2003 - 06:38 #17
Hvad nu hvis der er et linieskift i html koden hvordan simulere jeg det? eks
<TR>
<title>
Jeg vil gerne evaluere på både <TR> og <title>
Avatar billede papman Nybegynder
16. januar 2003 - 10:06 #18
Que ? du vil gerne have linjeskift <TR> og <title>...?
Avatar billede papman Nybegynder
16. januar 2003 - 10:07 #19
Ps: Jeg har lidt svært ved at læse dit svar cyberfessor.
Avatar billede pnr Nybegynder
16. januar 2003 - 10:14 #20
ja for det står på den måde jeg har skrevet det, og den kan ikke finde ud af det hvis jeg skriver:

intStart = InStr(str, "<TR><title>")
Avatar billede papman Nybegynder
16. januar 2003 - 10:18 #21
<tr> høre til i en tabel og kan ALDRIG kommer foran <titl>'en ?
Avatar billede pnr Nybegynder
16. januar 2003 - 10:23 #22
Er det ikke lige meget, der er mere ideen i det. hvordan viser jeg et linieskift?
Avatar billede papman Nybegynder
16. januar 2003 - 10:27 #23
Du finder det ord du vil have linjeskift ved og kan du bruge variablen og sig fx:
MinVar = søgestrengen & "<br>"
response.write MinVar
Avatar billede burningice Nybegynder
16. januar 2003 - 10:33 #24
papman>> arg... bug i eksperten... mit # er 11521877

pnr>> jeg fatter ikke helt hvad det er du vil...
Avatar billede pnr Nybegynder
16. januar 2003 - 10:35 #25
Det er et linieskift der er på den side hvor jeg bruger Instr(str,"").

DVS linieskiftet er i "str" og det skal med i min søgning: jeg har prøvet følgende uden held:

intStart = InStr(str, "<TR>\n<title>")
Avatar billede papman Nybegynder
16. januar 2003 - 10:40 #26
pnr>>>
Jeg gentager der er stadig IKKE noget der hedder "<TR>\n<title>" og "\n" er javascript!

Linjeskift hedder "vbCrLf" i asp

Cyberfessor husk at tilføje mig :-)
Avatar billede burningice Nybegynder
16. januar 2003 - 10:45 #27
papman>> det er forkert at sige at det hedder VbCrLf i Asp... det gør det hvis du bruger sproget VBScript, mens, hvis du programmerer med sproget JS, hedder det \n, og hvad det hedder med f.eks. Perl kan jeg ikke lige svare på...
Du skal huske på at asp IKKE er et sprog, det er en teknik, og man kan vælge at bruge et af de sprog som er understøttet af asp til at kode i !
Avatar billede papman Nybegynder
16. januar 2003 - 10:52 #28
Ja okey okey...
Avatar billede pnr Nybegynder
16. januar 2003 - 10:58 #29
dvs at jeg skal skrive

intStart = InStr(str, "<TR>"&vbCrLf&"<title>")

Det lyder ikke logisk :-/
Avatar billede burningice Nybegynder
16. januar 2003 - 11:12 #30
det kommer an på hvad det er du vil finde i din streng...

hvordan ser din streng ud når du skriver det hele ud?, og hvilken den af strengen vil du finde?

hvis din streng ser sådan her ud:
"<tr>
<title>"

så er der noget rivende galt, for <title> tag'et står altid i <head> tag'et, og der kan derfor ikke figurere et <tr> tag FØR <title> tag'et
Avatar billede papman Nybegynder
16. januar 2003 - 11:15 #31
Har prøvet at at fortælle pnr det!
Avatar billede pnr Nybegynder
16. januar 2003 - 11:23 #32
Jeg prøver forfra.

Jeg vil finde fakturaadresse ud fra følgende kode:

<font color="#FFFFFF">
<strong><em><font face="Arial" size="2">Fakturaadresse:

intStart = InStr(str, "<font color="#FFFFFF">/*MEN HER ER ET MELLEMRUM IKODEN*/<strong><em><font face="Arial" size="2">Fakturaadresse:")
Avatar billede papman Nybegynder
16. januar 2003 - 11:25 #33
Måske er det pga "ffffff" altså "" så den tro det stopper der....
Avatar billede pnr Nybegynder
16. januar 2003 - 11:31 #34
Det virker fint nok hvis jeg i den kode der bliver scannet fjerner mellemrummet:

<font color="#FFFFFF"><strong><em><font face="Arial" size="2">Fakturaadresse:
Avatar billede burningice Nybegynder
16. januar 2003 - 12:10 #35
hvorfor siger du ikke bare InStr(str, "Fakturaadresse:") ?? der er jo ingen grund til at starte allerede fra <font> tag'et
Avatar billede pnr Nybegynder
16. januar 2003 - 12:18 #36
Det var jo bare et eksempel, for jeg sidder ikke lige med den aktuelle kode nu. kan man ikke simulere et linieskift.
Avatar billede burningice Nybegynder
16. januar 2003 - 12:24 #37
jo... et linje skift er i vbscript defineret som VbCrLf, og i JS som \n... det synes jeg efterhånden der er blevet nævnt en masse gange
Avatar billede pnr Nybegynder
16. januar 2003 - 12:54 #38
Ja men nu er det jo i HTML!!!
Avatar billede papman Nybegynder
16. januar 2003 - 12:55 #39
i html hedder det "<br>"
Avatar billede pnr Nybegynder
16. januar 2003 - 13:00 #40
jeg takket fordi i har prøvet at forstå hvad jeg mener. men vi kommer nok ikke videre.
Avatar billede papman Nybegynder
16. januar 2003 - 13:03 #41
Gir du op så let ?
Når du kommer hjem så prøv at ind sætte de ting vi har sagt til dig - ellers kommer du bare igen :-)
Avatar billede pnr Nybegynder
16. januar 2003 - 13:05 #42
ok takker
Avatar billede burningice Nybegynder
16. januar 2003 - 19:29 #43
altså... hvis der i sourcekoden for dit dokument står

<font color="#FFFFFF">
<strong><em><font face="Arial" size="2">Fakturaadresse:

så er det SQ !!!!!!! VbCrLf der sørger for at lave BreakLine... ser du måske nogen <br> (hedder forresten <br />) ???

asldkjfs<br />sdflkjsældfk<br /> giver rigtig nok mellemrum, NÅR det vises i en browser, men i selve teksten for siden, er der INGEN BreakLine !!! tilgengæld vil følgende

asd
asd
asdf
sdf

stå i en lang linje når det bliver vist i en browser, men der findes mindst 3 !! breaklines... altså VbCrLf i vbscript \n i JS osv.
Avatar billede pnr Nybegynder
16. januar 2003 - 20:46 #44
Jeg prøver igen

her er et udpluk af det html kode jeg analysere:

<div class="stext">
<a href="test.asp?sags=10&pc=100268">Det her skal jeg bruge</a> </div>

så bruger jeg lidt kode tyv stjålet fra dig :-)

ntStart = InStr(str,"<div class=""stext"">VbCrLf<a")
response.write intstart
If intStart > 0 Then
    intStart = InStr(intStart, str, "<div class=""stext"">VbCrLf<a")
    intSlut = InStr(intStart, str, "</a>")
    strBillede = strBillede & Mid(str, intStart+3, intSlut) &"<br>"
    Count = 1
end if

    Response.Write strBillede
Else
    Response.Write "Der blev ikke fundet noget"
End If

Koden ser ikke lige så pæn ud da jeg kun lige tester!

Den finder intet skriver jeg istedet:

ntStart = InStr(str,"<div class=""stext"">") uden VbCrLf<a virker det fint, men jeg skal bruge det sidste ellers finder den for mange ting!
Avatar billede pnr Nybegynder
16. januar 2003 - 20:48 #45
ups der kom vist lige en "end if" for meget med, men det virker stadig ikke!
Avatar billede burningice Nybegynder
17. januar 2003 - 10:10 #46
VbCrLf er en vbs ting, så derfor skal du bryde ud af din streng inden du skriver det

intStart = InStr(intStart, str, "<div class=""stext"">"& VbCrLf &"<a")
Avatar billede pnr Nybegynder
17. januar 2003 - 13:46 #47
men det virker ikke!
Avatar billede pnr Nybegynder
17. januar 2003 - 13:46 #48
har i øvrigt oprette et nyt spørgsmål ang dette problem.
http://www.eksperten.dk/spm/306115
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester