比如说
我用WebBrowser打开一网页
通过GGG=WebBrowser1.Document.innertext
获得了某一处的数据GGG
但是我现在不想打开该网页而想获得GGG这个数据。
能不能做得到。
有可行的什么方法吗?
谢了。

解决方案 »

  1.   

    1 URLDownloadToFile之后读文件
    2 用winhttpAPI获取数据之后分析
      

  2.   

    最简单页面中放一个visible=false的webbrowse控件
      

  3.   

    jiangsheng的第一个方法的代码示例:
    Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    Function DownloadFile(url As String, LocalFilename As String) As Boolean
        Dim lngRetVal As Long
        lngRetVal = URLDownloadToFile(0, url, LocalFilename, 0, 0)
        If lngRetVal = 0 Then DownloadFile = True
    End Function使用举例:
    Private Sub Command1_Click()
        Const url = "http://community.csdn.net/Expert/topic/4234/4234147.xml?temp=.6008264"
        If (DownloadFile(url, "c:\backdata\temp.htm")) Then
            Debug.Print "下载成功"
        Else
            Debug.Print "下载失败"
        End If
    End Sub
      

  4.   

    .Net开发里面有专门的类库,WebClient类可以满足你的要求,VB这方面的支持比较有限。
      

  5.   

    不打开HTML文件却要获得里面的数据,那么假如它的数据是靠本地脚本运行后产生的,你怎么办?所以即便有办法那也不会是普适的。
      

  6.   

    有详细一点的方法吗??
    谢了。
    不需要靠本地的脚本。完全是服务器传过来的数据
    。NET可以具体一点吗?
      

  7.   

    这个一个.Net C#写的获取一个页面的数据例子:/// <summary>
    /// 模拟WEB页面的POST事件
    /// </summary>
    /// <param name="uri">请求的页面URL</param>
    /// <param name="dataToPost">POST数据</param>
    /// <returns>返回页面处理后的数据</returns>
    public static string PagePost(string uri,string dataToPost)
    {
    CookieContainer cc = new CookieContainer();
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
    req.ContentType = "application/x-www-form-urlencoded";
    req.ContentLength = dataToPost.Length;
    req.Method = "POST";
    req.CookieContainer = cc;
    using(Stream postData = req.GetRequestStream())
    {
    using(StreamWriter writer = new StreamWriter(postData, Encoding.Default))
    {
    writer.Write(dataToPost);
    }
    }
    HttpWebResponse res = (HttpWebResponse)req.GetResponse();
    res.Cookies = cc.GetCookies(req.RequestUri);
    string resString = "";
    using(Stream resData = res.GetResponseStream())
    {
    using(StreamReader reader = new StreamReader(resData, Encoding.Default))
    {
    resString = reader.ReadToEnd();
    }
    } return resString;
    }需要添加System.Net命名空间,dataToPost表示页面接受的Post数据,可以向动态页面发送请求。
      

  8.   

    想不太影响机器也可以这样:开一个WINSOCK,向对方发文件请求,收到的就是HTML文本文件,然后做文本分析也可以。比较简单,HTTP请求的细节你查一下资料,很多的。
      

  9.   

    晕死了。
    看来是我没有说清楚。
    我要取得的是一个即时更新的网页上的数据
    这个数据是随时可能更新
    我需要时刻跟踪这个数据
    但是因为我要开多个网页至少10个以上。
    那样就在占用资源。
    机子根本跑不动了。
    所以我需要不打开网页而能够获得这个网页上数据的方法。
    有吗?
    谢了。
    下载的方法好像不是太好实时跟踪,我不是太喜欢
    还有其它的方法吗?
    ================================================
    下载的方法得到的也是实时数据。因为使用的是API函数,资源耗费相当少。
    如果你认为下载到文件中,然后再读入内存分析这样走弯路的话,可以尝试internetreadfile函数。
    有关internetreadfile函数的用法,请参考:http://www.baidu.com/s?wd=internetreadfile&cl=3
      

  10.   

    用EXCEL对象,设置xlsapp.Visible =false
    然后用set xlsbook=xlsapp.Workbooks.Open("网址")
    set xlssheet=xlsbook.Worksheets("sheet1")
    然后取某个单元格的值即可。
      

  11.   

    楼上的简单,实用,引用个excel对象就可以了
      

  12.   

    回复人: jxgzay(jxgzay) ( ) 信誉:100 用EXCEL对象,设置xlsapp.Visible =false
    然后用set xlsbook=xlsapp.Workbooks.Open("网址")
    set xlssheet=xlsbook.Worksheets("sheet1")
    然后取某个单元格的值即可
    ------------------------
    对我来说还是不行。
    我要取数据的那个网页它的网址是不变化的。
    但是它有很多的链接,点了链接以后还是在原来的网页和网址下打开页面。
    内容在这个页面里面。而且这个页面的网址还是原来的没变。但是内容变了。
    用这种方法好像还是取不到我想要的值。
    也就是说这个网址是用的框架。
    主网页的那个地址是不会变动的。
    但是它框架是可以变的。
    这样应该怎么做。
      

  13.   

    如果是这样那就必须用webbrowser了
      

  14.   

    如何在WEBBROWSER中不显示网页。
    是不是不显示可以很大的减少占用的资源?
      

  15.   

    肯定了,IE一个窗口占用10M内存,如果用webbrowset估计占用10-20m吧,如果用api估计就不用内存了
      

  16.   

    不以占内存还占CPU。
    API有什么好的方法