加载中…
个人资料
neuxxm
neuxxm
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,110
  • 关注人气:26
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB 爬虫

(2012-11-26 00:59:47)
标签:

杂谈

分类: 编程摘录
Option Explicit

Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Const INTERNET_OPEN_TYPE_DIRECT = 1
Public Const INTERNET_OPEN_TYPE_PROXY = 3

Public Const scUserAgent = "Microsoft Internet Explorer 6.0"
Public Const INTERNET_FLAG_RELOAD = &H80000000

Public Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Public Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Public Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
                    
Public Function GetUrlStr(URL As String) As String '调用时 URL 参数一定要带 http:// 前缀.
      Dim hOpen                 As Long
      Dim hOpenUrl              As Long
      Dim sUrl                  As String
      Dim bDoLoop               As Boolean
      Dim bRet                  As Boolean
      Dim sReadBuffer           As String * 2048
      Dim lNumberOfBytesRead    As Long
      Dim sBuffer               As String

      sUrl = URL
    
      hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
      hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)

      bDoLoop = True
      While bDoLoop
          sReadBuffer = vbNullString
          bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
          sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
          If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
      Wend
    
      GetUrlStr = sBuffer
    
      If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
      If hOpen <> 0 Then InternetCloseHandle (hOpen)
End Function

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有