Weil du damit nur die erste Version des Quellcodes herunterlädst. Einige Websiten modifizieren ihr DOM nachträglich.
Ich kenne nur eine Lösung für WebGadget, um den endgültigen Quellcode auszulesen, aber wie man es beim ReceiveHTTPFile() macht, weiß ich gerade selber nicht.
\\Edit:
Bei meinem Test ist data.dat 221.931 Bytes groß.
ReceiveHTTPFile funktioniert nicht mehr
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: ReceiveHTTPFile funktioniert nicht mehr
Bei mir sind es 221932 Bytes.
Der DOM wird sicherlich noch nachträglich geändert, immerhin laufen bei Google noch einige Javascripts. Dafür braucht man aber wirklich ein WebGadget.
Der DOM wird sicherlich noch nachträglich geändert, immerhin laufen bei Google noch einige Javascripts. Dafür braucht man aber wirklich ein WebGadget.
Re: ReceiveHTTPFile funktioniert nicht mehr
221.931 Bytes
mal abgesehen davon, dass der Code ohne Modifikation nicht läuft ("Comparisons (=, <, >, =< and >=) are only supported with keywords like If, While, Until or within Bool()."))
mal abgesehen davon, dass der Code ohne Modifikation nicht läuft ("Comparisons (=, <, >, =< and >=) are only supported with keywords like If, While, Until or within Bool()."))
Hygge
Re: ReceiveHTTPFile funktioniert nicht mehr
Also ich habe es jetzt mal mit dem Code von RSBasic probiert
aber leider funktioniert das auch nicht. Bei www.google.de bekomme ich wieder nur ca. 48.000 Zeichen.
Wie bekommt ihr die 200.000 bytes???
Code: Alles auswählen
;Autor: freak
;http://www.purebasic.fr/german/viewtopic.php?p=112747#p112747
EnableExplicit
Procedure WebGadget_Document(Gadget, *IID)
Protected Document = 0
Protected Browser.IWebBrowser2
Protected DocumentDispatch.IDispatch
Browser.IWebBrowser2 = GetWindowLongPtr_(GadgetID(Gadget), #GWL_USERDATA)
If Browser
If Browser\get_Document(@DocumentDispatch.IDispatch) = #S_OK And DocumentDispatch
DocumentDispatch\QueryInterface(*IID, @Document)
DocumentDispatch\Release()
EndIf
EndIf
ProcedureReturn Document
EndProcedure
Procedure.s WebGadget_PageHtml(Gadget)
Protected Result$ = ""
Protected Document.IHTMLDocument3
Protected Root.IHTMLElement
Protected bstr_html
Document.IHTMLDocument3 = WebGadget_Document(Gadget, ?IID_IHTMLDocument3)
If Document
If Document\get_documentElement(@Root.IHTMLElement) = #S_OK
If Root\get_outerHTML(@bstr_html) = #S_OK And bstr_html
Result$ = PeekS(bstr_html, -1, #PB_Unicode)
SysFreeString_(bstr_html)
EndIf
Root\Release()
EndIf
Document\Release()
EndIf
ProcedureReturn Result$
EndProcedure
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
WebGadget(1, 0, 0, WindowWidth(0), WindowHeight(0)-40, "http://www.purebasic.com")
ButtonGadget(2, WindowWidth(0)-110, WindowHeight(0)-30, 100, 20, "HTML ermitteln", 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 2
Debug WebGadget_PageHtml(1)
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
DataSection
IID_IHTMLDocument2: ; {332C4425-26CB-11D0-B483-00C04FD90119}
Data.l $332C4425
Data.w $26CB, $11D0
Data.b $B4, $83, $00, $C0, $4F, $D9, $01, $19
IID_IHTMLDocument3: ; {3050F485-98B5-11CF-BB82-00AA00BDCE0B}
Data.l $3050F485
Data.w $98B5, $11CF
Data.b $BB, $82, $00, $AA, $00, $BD, $CE, $0B
IID_NULL: ; {00000000-0000-0000-0000-000000000000}
Data.l $00000000
Data.w $0000, $0000
Data.b $00, $00, $00, $00, $00, $00, $00, $00
EndDataSection
; IDE Options = PureBasic 5.31 (Windows - x64)
; CursorPosition = 2
; Folding = -
; EnableUnicode
; EnableXP
; EnableUser
; EnableCompileCount = 0
; EnableBuildCount = 0
Wie bekommt ihr die 200.000 bytes???
Re: ReceiveHTTPFile funktioniert nicht mehr
Naja immerhin 2.000 Zeichen mehr als mit
Code: Alles auswählen
InitNetwork()
Debug ReceiveHTTPFile("https://www.google.de", GetHomeDirectory()+"test.dat")
- TroaX
- Beiträge: 661
- Registriert: 08.03.2013 14:27
- Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Pop_OS! | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Pop_OS!
- Wohnort: NRW
- Kontaktdaten:
Re: ReceiveHTTPFile funktioniert nicht mehr
Ganz einfach. Weil die Angabe in Byte's nun einmal deutlich Größer ist als die Angabe in Zeichen. Die Seite ist in UTF-8 kodiert. Ein Zeichen kann theoretisch bis zu 4 Byte haben. 48.000 x 4 = 192.000 Bytes. Differenzen können im Markup immer auftreten, da viel vom Javascriptcode im HTML eingelagert ist. Ich gehe daher davon aus, das Passagen dieser Codes dynamisch serverseitig erzeugt werden. Deswegen hänge dich nicht daran auf. Sondern versuche das zu bekommen, was du haben möchtest. Ich kann mir nicht vorstellen, das dein Projekt daran scheitert, das du statt 200.000 Bytes nur 48.000 Zeichen hast (was logischerweise nicht vergleichbar ist).Moxl hat geschrieben:aber leider funktioniert das auch nicht. Bei http://www.google.de bekomme ich wieder nur ca. 48.000 Zeichen.
Wie bekommt ihr die 200.000 bytes???
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Pop_OS!
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Pop_OS!
NAS: Fritz.Box
Coding: Purebasic 6.04 | PHP | HTML | CSS | Javascript