【问题标题】:How do I scrape a website for information?如何抓取网站以获取信息?
【发布时间】:2013-03-05 10:21:38
【问题描述】:

我希望我的程序仅自动从网站下载某些信息。在发现这几乎是不可能的之后,我认为程序最好只下载整个网页,然后在字符串中找到我需要的信息。

如何在特定单词之后找到特定单词/数字?我想要的数字之前的单词是always。数量不同,这就是我的程序中需要的数量。

【问题讨论】:

  • 你能发一个示例文本吗?
  • 首先你需要确保这个词是唯一的,然后你可以使用msdn.microsoft.com/de-de/library/…
  • 为了清楚起见,我已经编辑了您的问题,并使用了社区更熟悉的短语。如果我的任何更改不正确,请自行编辑以澄清您的问题。
  • 你的问题有点含糊。如果可以,请提供更多上下文和一些示例代码。 “从网站上下载某些信息”并不一定是不可能的,具体取决于它的细节。查看屏幕抓取。
  • 关于这个问题的任何更新?

标签: c# html-parsing


【解决方案1】:

听起来像屏幕抓取。我推荐使用 CSQuery https://github.com/jamietre/CsQuery (或者如果你愿意,也可以使用 HtmlAgilityPack)。获取源,解析为对象,遍历所有文本节点并在那里进行字符串比较。执行此操作的实际方式因源 HTML 的完成方式而异。

可能类似于这个从内存中编写的未经测试的示例 (CSQuery)

var dom = CQ.Create(stringWithHtml);
dom["*"].Each((i, e) =>
{
    // handle only text nodes
    if (e.NodeType == NodeType.TEXT_NODE) {
        // do your check here
    }
}

【讨论】:

    【解决方案2】:

    我已将HTML Agility Pack 用于多个应用程序,并且效果很好。还有很多选择。

    这是一个可爱的 HTML 解析器,通常为此推荐。它将采用格式错误的 HTML 并将其转换为 XHTML,然后是可遍历的 DOM,例如 XML 类。因此,对于您在野外找到的代码非常有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多