none
為什麼MSHTML.HTMLLinkElement無法找出所有的LINK? RRS feed

  • 問題

  • 各位大大,小第寫了一小段CODE,主要是先將某個網頁讀進來,然後抓出所有的LINK,但我始終抓不出所有的LINK,請各位大大指點指點,感謝:

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.yahoo.com.tw");
                /*request.MaximumAutomaticRedirections = 4;
                request.MaximumResponseHeadersLength = 4;
                request.Credentials = CredentialCache.DefaultCredentials;
                */
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream receiveStream = response.GetResponseStream();
                StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
                this.textBox2.Text = readStream.ReadToEnd();
                response.Close();
                readStream.Close();

                MSHTML.IHTMLDocument2 doc = default(MSHTML.IHTMLDocument2);
                doc = (MSHTML.IHTMLDocument2)new MSHTML.HTMLDocument();
                doc.write(textBox2.Text);

                foreach (MSHTML.HTMLLinkElement href in doc.links)
                {
                    try
                    {
                        //if(href.nodeName)
                        //textBox3.AppendText(doc.links.length);
                        textBox3.AppendText("Href:"+href.href +"\r\n");
                    }
                    catch (Exception ex)
                    {
                        textBox3.AppendText(ex.ToString() + "\r\n");
                    }
                }

    2010年1月17日 上午 11:05

解答

所有回覆

  • 用WebBrowser會不會方便點?
    private void button1_Click(object sender, EventArgs e) {
        browser = new WebBrowser();
        browser.Navigate("http://www.yahoo.com.tw");
        browser.DocumentCompleted += 
            new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
    }
    
    void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
        StringBuilder links = new StringBuilder();
        foreach (HtmlElement href in browser.Document.Links)
            links.Append("Href:" + href.GetAttribute("href") + "\r\n");
    
        textBox1.Text = links.ToString();
    }
    2010年1月17日 上午 11:45
  • 請舉例哪些找不到。
    比如說透過 script 的 onclick 那種是找不到的,因為那種並非是靜態連結。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年1月17日 上午 11:46
  • 感謝大大的指點,但我之所以會不用web browser是因為我不想讓PC的負擔太重,不知各位大大有沒有方法可以解決!謝謝~
    2010年1月17日 下午 01:05
  • 你不妨試試 codeplex 上的 HTML Agility Pack: http://msdn.microsoft.com/zh-tw/ee787055.aspx
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    請不要藉新手之名行小白之實,否則只會讓更多無辜的新手得不到幫助而已。
    如果不知道什麼是小白,請參閱:何謂小白
    • 已標示為解答 Lolota Lee 2010年1月25日 上午 05:30
    2010年1月17日 下午 01:50
    版主
  • hi
    也可以嘗試看看
    Simple Scraping with SubSonic.Sugar

    download SubSonic.dll
    http://www.megaupload.com/?d=TKP8NW4W

    http://www.dotblogs.com.tw/ricochen/Default.aspx
    • 已編輯 ricoisme 2010年1月18日 上午 07:16 補上SubSonic.dll
    • 已標示為解答 Lolota Lee 2010年1月25日 上午 05:31
    2010年1月18日 上午 05:48