Avatar billede bongi Juniormester
10. december 2015 - 11:12 Der er 17 kommentarer og
1 løsning

Hente data fra en anden side

Hej X'er

Jeg står overfor en opgave med at hente data (status for forbrugsstoffer) ud fra en printers (HP/Xerox) status sider, og inkludere dem i en samlet oversigt over vores printere, men jeg har ikke tidligere arbejdet med at hente data fra andre sider og vil være glad hvis nogen kunne hjælpe mig igang.


Det jeg skal "hente" er dette:
<td  style="vertical-align: bottom; width: 25%"  >
<div class="hpGasGaugeBlock">
<span style="font-size:10px;">
Sort Kassette&nbsp;&nbsp;10%*<br />
CE255X
</span>
<div class="hpGasGaugeBorder">
<div style="background-color: #000000;width: 10%; height: 100%; margin: 0px 0px 0px 0px;" ><div style="border: solid #000000 1px; height: 80%; ">
&nbsp;
</div></div>
</div>
</div>
</td>


Fra siden:
https://10.10.113.22/hp/device/this.LCDispatcher

Håber der er et lyst hoved eller 2 der kan hjælpe mig :)
Avatar billede claes57 Ekspert
10. december 2015 - 12:22 #1
vi skal lige finde noget unikt i det område, så vi kan finde et sted at starte.
Hvis vi tager ordet 'hpGasGaugeBlock' bliver det brugt tidligere på siden?
Avatar billede claes57 Ekspert
10. december 2015 - 12:43 #2
hvis ordet er unikt, så test lige denne stump kode, jeg har tilrettet:

<%
  On Error Resume Next
  Set whttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
  whttp.Open "GET","https://10.10.113.22/hp/device/this.LCDispatcher"
  whttp.Send

  If whttp.Status <> 200 Then
    Response.Write "Der opstod en fejl :<hr>" & vbCrLf
    Response.Write "<P>fejlkode " & whttp.Status & "<Br>" & whttp.StatusText & "<hr>"
  Else
    helesiden = whttp.ResponseText
    start=instr(1,helesiden,"hpGasGaugeBlock")
    if start>0 then
      ' find seneste <td før dette punkt / InstrRev ( string_being_searched, string2 [, start [ , compare] ] )
      start2 = instrrev(left(helesiden,start), "<td")
      slut=instr(start2,helesiden,"/td") +4
      msg=mid(helesiden,start2,slut-start2)
      ' så har vi fat i start og slut
' hvis du vil se siden, så brug denne linje
      response.write msg
' hvis du vil se koden, så brug denne linje
'      response.write Server.HTMLEncode(msg)
    else
      msg="Der er ændret på sitet - koden skal rettes (søgte på hpGasGaugeBlock)"
    end if
  End If
  On Error Goto 0
%>
Avatar billede bongi Juniormester
10. december 2015 - 12:46 #3
Det fremkommer en gang før

"al-align:top;}div.hpGasGaugeBlock {background-color:"
Avatar billede bongi Juniormester
10. december 2015 - 12:51 #4
Din test melder fejl, uden beskrivelse :(
Avatar billede claes57 Ekspert
10. december 2015 - 13:39 #5
det var den der 'en gang før', der lige skal tages højde for
du kan evt fjerne kommentar ved
'      response.write Server.HTMLEncode(msg)
for at se, hvad den finder af kode - det kan være, at der skal justeres et par tegn til/fra...

<%
  On Error Resume Next
  Set whttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
  whttp.Open "GET","https://10.10.113.22/hp/device/this.LCDispatcher"
  whttp.Send

  If whttp.Status <> 200 Then
    Response.Write "Der opstod en fejl :<hr>" & vbCrLf
    Response.Write "<P>fejlkode " & whttp.Status & "<Br>" & whttp.StatusText & "<hr>"
  Else
    helesiden = whttp.ResponseText
    start=instr(1,helesiden,"hpGasGaugeBlock")
    start=instr(start+1,helesiden,"hpGasGaugeBlock")
    if start>0 then
      ' find seneste <td før dette punkt
      start2 = instrrev(left(helesiden,start), "<td")
      slut=instr(start2,helesiden,"/td") +4
      msg=mid(helesiden,start2,slut-start2)
      ' så har vi fat i start og slut
' hvis du vil se siden, så brug denne linje
      response.write msg
' hvis du vil se koden, så brug denne linje
'      response.write Server.HTMLEncode(msg)
    else
      msg="Der er ændret på sitet - koden skal rettes (søgte på hpGasGaugeBlock)"
    end if
  End If
  On Error Goto 0
%>
Avatar billede bongi Juniormester
10. december 2015 - 14:04 #6
får stadig samme "tomme" fejl, men måske det problem ligger på vores webserver... må lige få tjekket op på det...
Avatar billede claes57 Ekspert
10. december 2015 - 14:15 #7
tjek også lige, om I kan WinHttpRequest.5.1 - eller om det er for gammelt.
Avatar billede bongi Juniormester
10. december 2015 - 14:34 #8
Er der en "nem" måde at tjekke det på ?
Avatar billede claes57 Ekspert
10. december 2015 - 14:54 #9
fjern de to linjer med
On Error
og test - så vil den skulle dø med fejl.
Avatar billede jakobdo Ekspert
10. december 2015 - 15:05 #10
Du kunne også overveje en helt anden indgang. Den ville jeg selv synes var "sjovere" :o)

De fleste printere kan snakke SNMP.
Fandt lige denne:

black:1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.10.1.1.37.1.0
cyan:1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.10.1.1.37.2.0
magenta:1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.10.1.1.37.3.0
yellow:1.3.6.1.4.1.11.2.3.9.4.2.1.4.1.10.1.1.37.4.0

Måske det var en måde ?
Avatar billede bongi Juniormester
10. december 2015 - 15:13 #11
Kan ikke få hul igennem med Whttp :( den timer ud
Avatar billede claes57 Ekspert
10. december 2015 - 15:32 #12
SNMP lyder også som en (enkel?) måde at holde styr på hele nettet - modsat det gamle, jeg havde lidt kode på.
Avatar billede bongi Juniormester
10. december 2015 - 15:42 #13
Ja, måske jeg skal "den vej" men tak for dit forsøg, skal nok huske dig når jeg lukker point ud :) så husk at smide et svar..!!
Avatar billede claes57 Ekspert
10. december 2015 - 15:55 #14
ligemeget mht point til mig - det var bare en stump gammel kode.
Avatar billede jakobdo Ekspert
10. december 2015 - 19:36 #15
Ved ikke om claes57 er ironisk eller ej.
Men snmp kan bestemt være alt andet end enkelt.
Jeg har forsøgt at holde styr på print-forbrug i en kommune via SNMP. Og der er jo næsten INGEN standarder for det "lort".
Kan da godt være man har 20 maskiner der alle er fra f.eks. producent1, men det betyder jo ikke de skal have samme snmp-kommandoer. Så det kan sagtens være en jungle og finde de korrekte data frem.
Men hvis du har adgang til en linux boks, så kan du bruge snmp-walk.
Et trick jeg "glemte" er man kan angive version på snmp-protokol, nogle gange fik jeg bedre svar på en lavere protokol, end 2 eller 3 mener jeg.
Avatar billede claes57 Ekspert
10. december 2015 - 20:37 #16
jakobdo - jeg skrev (enkel?) - jeg har ikke forsøgt at hente data siden jeg lave asp-kode (som det ses af eksempel) for 10-12 år siden. Hvad der er sket siden da i det område, har jeg ikke styr på.
Avatar billede jakobdo Ekspert
10. december 2015 - 20:42 #17
Og jeg har "aldrig" kodet en linje asp, så ved ikke hvor svært/nemt det er at kode snmp kodning i asp. :)

Det skal nok blive en succes det her projekt.
Avatar billede bongi Juniormester
25. december 2015 - 00:20 #18
lukker
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