Ik verveel me meer dan ik dacht
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| SaveURLs "http://www.webwereld.nl/articles/%num%", 37600, 37610, "C:\Output_webwereld.xml"
SaveURLs "http://www.blabla.com/resultaat.asp?ID=%num%&user=someone&pass=asecret", 1, 30, "C:\Output_blabla.xml"
Msgbox "Done!"
Private Sub SaveURLs(sURL, lStart, lEnd, sDestination)
'**********
'Deze sub haalt de opgegeven URLs op van lStart tot lEnd en slaat ze op in een XML document in locatie sDestination
'In de sURL parameter wordt de %num% tekenreeks vervangen door het (oplopende) "id"/"nummer"
'Errorhandling mag je zelf bouwen ;)
'**********
Dim oDoc, T
Dim oOut, oRoot, oNode
Set oDoc = CreateObject("WinHttp.WinHttpRequest.5.1") 'Create object to retrieve web-pages
Set oOut = CreateObject("MSXML.DomDocument") 'Create object to store results
Set oRoot = oOut.createElement("savedurls") 'Create a result document
oRoot.setAttribute "url", sURL 'Save some info about this function call
oRoot.setAttribute "start", lStart
oRoot.setAttribute "end", lEnd
oRoot.setAttribute "date", Now
oOut.appendChild oRoot 'Add root to document
For T = lStart To lEnd 'Loop all from lStart to lEnd
oDoc.open "GET", Replace(sURL, "%num%", CStr(T)) 'Build URL
oDoc.send '...And go fetch it
If oDoc.status >= 200 And oDoc.status < 400 Then 'HTTP status ok?
Set oNode = oOut.createElement("page") 'Create url node
oNode.nodeTypedValue = oDoc.responseText 'Save response
oNode.setAttribute "http_status", oDoc.status 'Save the http_status code
oNode.setAttribute "num", T 'Save the ID that was retrieved
oRoot.appendChild oNode 'Add node to root
End If
Next
oOut.save sDestination 'Save results
Set oOut = Nothing 'Free objects
Set oDoc = Nothing
End Sub |
Copy/paste naar een .VBS bestand en URL aanpassen en runnen...
De
SaveURLs functie kun je aanroepen met een url, waarbij je het ID nummer vervangt door %num% (case sensitive). De 2e en 3e parameter zijn het start en eind ID dat je wil ophalen en de laatste parameter is waar je je resultaten wil opslaan. URL's worden dus gemaakt door %num% te vervangen door het "ID" (van lStart tot lEnd).
De resultaten worden in 1 xml document opgeslagen als "page"-nodes en wel als volgt:
code:
1
2
3
4
5
6
7
8
| <savedurls url="http://www.webwereld.nl/articles/%num%" start="37600" end="37610" ate="10/12/2005 1:22:18 AM">
<page http_status="200" num="37600"> ...webpage html hier... </page>
<page http_status="200" num="37601"> ...webpage html hier... </page>
<page http_status="200" num="37602"> ...webpage html hier... </page>
...
...
<page http_status="200" num="37610"> ...webpage html hier... </page>
</savedurls> |
Je kunt ze natuurlijk ook als losse documenten opslaan. Mij leek het echter wel grappig om alles in 1 bestand op te slaan en daarmee wat zoekwerk voor de TS over te laten

Dat is wel handig om te weten ja

Deze code werkt uiteraard in ASP, maar dus ook als VBS. In de ASP zou ik alleen even de '
MsgBox "done"' weghalen

Ik wil niet slapen

Het is nog LAAAAANG geen bedtijd!!

Ah toe?? 1 minuutje nog?

Jah....
[
Voor 211% gewijzigd door
RobIII op 12-10-2005 01:43
]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij