簡體   English   中英

使用C#控制台應用程序從網站上抓取數據

[英]scraping data from website with a C# console application

我正在努力學習西班牙語並制作一些閃存卡(供我個人使用)以幫助我學習動詞。

這是一個示例頁面示例 所以在頁面頂部附近你會看到過去的分詞:bloqueado和gerund:bloqueando。 我希望在我的代碼中獲取這兩個值並用於我的閃存卡。

如果可以的話,我將使用C#控制台應用程序。 我知道從網站上抓取數據並不理想,但這是一次性的。

關於如何開始這樣的事情和避免陷阱的任何指導將是非常有幫助的!

我知道這不是一個確切的答案,但這是我建議的過程。

  1. https://www.gnu.org/software/wget/並將網站鏡像到一個文件夾。 Wget是一個網絡蜘蛛,它將跟隨網站上的鏈接,直到它下載了所有內容。 您必須使用幾個不同的參數運行它,直到找到所需的正確設置。
  2. 使用C#運行文件夾中的每個文件,並從每個文件中的<section class="verb-mood-section">中提取單詞。 您可以選擇是將它們輸出到控制台還是將它們存儲在數據庫或平面文件中。

理論上應該這么簡單。

使用SGMLReader SGMLReader是一個多功能且強大的組件,可以將HTML流式傳輸到XMLReader:

XmlDocument FromHtml(TextReader reader) {

    // setup SgmlReader
    Sgml.SgmlReader sgmlReader = new Sgml.SgmlReader();
    sgmlReader.DocType = "HTML";
    sgmlReader.WhitespaceHandling = WhitespaceHandling.All;
    sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower;
    sgmlReader.InputStream = reader;

    // create document
    XmlDocument doc = new XmlDocument();
    doc.PreserveWhitespace = true;
    doc.XmlResolver = null;
    doc.Load(sgmlReader);
    return doc;
}

您可以看到首先需要創建TextReader。 這實際上是一個StreamReader,因為TextReader是一個抽象類。

然后在其上創建XMLDocument。 一旦進入XMLDocument,就可以使用XMLDocument支持的各種方法來隔離和提取所需的節點。 我會讓你去探索它的那個方面。

您可以嘗試使用XDocument類,因為它比XMLDocument更容易處理,特別是如果您是新手。 它還支持LINQ。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM