VB6收集更新的URL
我有一个已经生成的网址列表。问题是,我相信该站点使用php生成页面,因为当导航其中一个地址时,该站点会向该地址添加一个子目录 例如,如果我导航到VB6收集更新的URL,vb6,Vb6,我有一个已经生成的网址列表。问题是,我相信该站点使用php生成页面,因为当导航其中一个地址时,该站点会向该地址添加一个子目录 例如,如果我导航到 http://www.wowhead.com/item=43 地址变为 http://www.wowhead.com/item=43/squires-boots 每个项目编号的子目录都不同 我想做的是为我生成的每个地址收集重定向到的url,因为有很多地址,大约127000个,我正在寻找最快的方法 目前,我正在使用webbrowser控件wb Dim
http://www.wowhead.com/item=43
地址变为
http://www.wowhead.com/item=43/squires-boots
每个项目编号的子目录都不同
我想做的是为我生成的每个地址收集重定向到的url,因为有很多地址,大约127000个,我正在寻找最快的方法
目前,我正在使用webbrowser控件wb
Dim l As Long
Dim ff As Long
Dim strPerkText as String
Dim sPaths() As String
Dim lngTimer As Long
Const lngWait As Long = 5
strPerkText = OpenFile 'using a sub to get this data
sPaths = Split(strPerkText, vbCrLf)
ff = FreeFile
Open App.Path & "\ItemListURLs.txt" For Output As #ff
For l = 0 To UBound(sPaths)
lngTimer = Timer
wb.Navigate2 sPaths(l)
Do While wb.READYSTATE <> READYSTATE_COMPLETE
If Timer - lngTimer >= lngWait Then
Exit Do
End If
DoEvents
Loop
Write #ff, wb.LocationURL
DoEvents
Next l
Close #ff
lngWait是我必须等待wb使用新url更新的时间,每页大约5秒,除非出现任何错误。这意味着,按照我现在构建程序的方式,大概需要一周的时间来完成所有工作。我不确定使用不同的控件、API或纯本机代码是否可以更快地完成此任务
欢迎所有建议。我已经测试了Inet控件。它只花了webbrowser所需时间的一小部分就完成了这项工作,而且我不必担心网站可能会抛出任何错误。对于其他寻找类似内容的人,我使用了以下代码:
Dim l As Long
Dim sPaths() As String
Dim b() As Byte
Dim strFileName As String
'OpenFile is a function that opens the specific
'file with the list of URLs
If strPerkText = "" Then
strPerkText = OpenFile
End If
'split up the list
sPaths = Split(strPerkText, vbCrLf)
'progress bar - set to 0
pbrGo.Value = 0
'itterate through the list
For l = 0 To UBound(sPaths)
'make sure there is a path to use
If sPaths(l) <> "" Then
'set the path to the Inet control
Inet.URL = sPaths(l)
'Retrieve the HTML data into a byte array.
b() = Inet.OpenURL(Inet.URL, icByteArray)
'GetFileName captures the end of the URL back to the last /
strFileName = GetFileName(Inet.URL)
'txtCollect.text contains the path where the files will be saved
'adjust the filename to include the path and extension
strFileName = txtCollect.Text & strFileName & ".txt"
'Create a local file from the retrieved data.
Open strFileName For Binary Access Write As #1
Put #1, , b()
Close #1
'update progress bar
pbrGo.Value = (l / UBound(sPaths)) * 100
DoEvents
End If
Next l
beep
MsgBox "Downloading Files Complete"
我已经测试了Inet控件。它只花了webbrowser所需时间的一小部分就完成了这项工作,而且我不必担心网站可能会抛出任何错误。对于其他寻找类似内容的人,我使用了以下代码:URL重写几乎不意味着使用PHP。如果网站将你的整个IP子网列入黑名单,并用这种方式对其进行攻击,也不要感到惊讶。人们只会想知道,你试图以这种方式获取URL的目的是什么。很难想象这不违反网站的使用条款。