none
C# 擷取網頁上文字 RRS feed

  • 問題

  • 想擷取網路上一段文字

    每一次都會出現錯誤

    例如我現在抓一個對外IP為範例

    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using HtmlAgilityPack;
    
    namespace ConsoleApp1Post {
        class Program {
            static void Main(string[] args) {
    
                WebClient url = new WebClient();
                MemoryStream ms = new MemoryStream(url.DownloadData("http://www.whatismyip.com.tw/"));
                
                HtmlDocument doc = new HtmlDocument();
                doc.Load(ms, Encoding.Default);
                HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/span/d");
                
                Console.Write(test.InnerText);
                Console.Read();
    
    
            }
        }
    }

    InnerText都會顯示

    System.NullReferenceException: '並未將物件參考設定為物件的執行個體。'

    test 為 null。

    想請問是我軟體有少安裝甚麼東西嗎

    還是有寫錯的地方,謝謝!

    2018年12月17日 下午 07:08

所有回覆

  • 應該不是少安裝, 而是程式抓到的內容是空白, 原因大約是您的網頁內容是用動態技術生成的, 這種狀況要使用selenium或phantomJs才能抓到內容, 請參考:

    How to load dynamically generated webpage?

     

    2018年12月18日 上午 01:10
  • 你必須傳送 相關 Header
    for example:
                url.Headers.Add(HttpRequestHeader.Accept, "text/html");
                url.Headers.Add(HttpRequestHeader.UserAgent, "ConsoleApplication1");

    另外 你的 XPath 也錯了
    應該是
    /html/body/span/b



    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度


    • 已編輯 Alex_Lee 2018年12月18日 上午 06:45 補充 XPath 錯誤
    2018年12月18日 上午 06:16