【问题标题】:scraping data from website with a C# console application使用 C# 控制台应用程序从网站抓取数据
【发布时间】:2017-04-06 10:37:43
【问题描述】:

我正在努力学习西班牙语并制作一些闪卡(供我个人使用)来帮助我学习动词。

这是一个示例,page example。因此,在页面顶部附近,您会看到过去分词:bloqueado 和动名词:bloqueando。我希望在我的代码中获得这两个值并用于我的闪存卡。

如果可能的话,我将使用 C# 控制台应用程序。我知道从网站上抓取数据并不理想,但这是一次性的。

任何关于如何开始这样的事情和避免陷阱的指导都会非常有帮助!

【问题讨论】:

  • 那么您尝试过什么,您到底卡在哪里了?有任何代码可以展示吗?
  • 好吧,我尝试查看网页的 html 以查看是否可以解析它,但是我在 html 中看不到我需要的字段。因此,否则一直在阅读以查看其他方式来废弃数据但不使用某些第三方应用程序
  • “但是我在 html 中看不到我需要的字段”是什么意思?你指的是什么领域?使用 Chrome 开发人员工具查看 HTML 时,我很容易找到这些值/词,它们都列在以下部分标记中:<section class="verb-mood-section">。对我来说,仍然非常不清楚您到底遇到了什么问题......
  • 啊,谢谢!我现在可以在 html 中看到它们。好吧,我没想到 HTML 中的值,所以想知道如何从网站上抓取数据。现在我可以看到我将谷歌如何获取网页的 html 的值

标签: c# .net


【解决方案1】:

我知道这不是一个确切的答案,但这是我建议的过程。

  1. https://www.gnu.org/software/wget/ 并将网站镜像到 文件夹。 Wget 是一个网络蜘蛛,它将跟随网站上的链接,直到它下载了所有内容。您必须使用几个不同的参数来运行它,直到找到所需的正确设置。
  2. 使用 C# 遍历文件夹中的每个文件并提取 每个文件中来自<section class="verb-mood-section"> 的单词。您可以选择是将它们输出到控制台还是将它们存储在数据库或平面文件中。

理论上应该这么简单。

【讨论】:

    【解决方案2】:

    使用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。 TThis 实际上是 StreamReader,因为 TextReader 是一个抽象类。

    然后在上面创建 XMLDocument。将它放入 XMLDocument 后,您可以使用 XMLDocument 支持的各种方法来隔离和提取您需要的节点。我会让你去探索它的这方面。

    您可以尝试使用 XDocument 类,因为它比 XMLDocument 更容易处理,特别是如果您是新手。它还支持 LINQ。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 2015-12-27
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      相关资源
      最近更新 更多