我想构建一个小型应用程序,它将访问一些网站并从这些网站读取特定数据,我希望该应用程序尽可能通用,以便以后可以在我想要的任何网站上运行。那么有一种使用.net 解析网站的好方法吗?
6 回答
有人告诉我,在 .NET 中进行屏幕抓取的一个很好的工具包是HTML Agility Pack。
您应该意识到,要使屏幕抓取解决方案稳定或如您所描述的通用用途总是非常困难的。
另请参阅此问题的其他答案:屏幕抓取:正则表达式或 XQuery 表达式?
虽然不是真正适用于您的场景,但请查看Watin。我假设您想要做的是屏幕刮擦。Watin 很容易上手,并且可以避免您自己编写大部分解析代码。
使用 wget for windows 和正则表达式应该做你想做的事。您使用 wget 获取源代码,然后使用正则表达式过滤掉所有代码,或者如果它具有模式,则准确获取您要查找的内容。
假设您尝试获取的数据无法通过 RSS 或其他类似方式获得,听起来您正在寻找页面抓取工具。谷歌搜索“.NET HTML scraper”会返回有关该主题的大量信息。
阅读为人类阅读而制作的网站始终是一个问题。我这样做已经有几年了,这从来都不是一件容易的事。在 XML 或 RSS 等其他文件中寻找您需要的数据总是一个好主意。
始终牢记网站布局可能会发生变化,您必须调整您的应用程序。但主要问题是在页面上找到您需要的信息。我们总是需要很多字符串方法,比如 contains、left、mid、indexOf。
HTML 是某种 XML,所以也许 XMLParser 可以工作。但是浏览器总是更宽容一些,并且会接受并显示许多格式不正确的页面。
如果该站点不提供 API,您最终将“抓取”该网站。虽然这当然是可能的,但它非常脆弱。如果网站发生变化,您用来“查找”所需信息的逻辑就会中断。拥有一个可以找到特定信息的通用应用程序是一个很棒的概念,但很难可靠地实现。