c# – 从网页中拉取数据,解析特定的部分并显示它

我一直在使用这个网站很长一段时间来找到我的问题的答案,但是我无法找到这个答案.

我正在和一个班上的小组合作.我们要建立一个小型的“游戏交易”网站,允许人们注册,放入他们想要交易的游戏,并接受他人的交易或要求交易.

我们的网站运行时间很长,所以我们试图添加更多的网站.我想做的一件事是将放入Metacritic的游戏链接起来.

这是我需要做的.我需要(在visual studio 2012中使用asp和c#)在Metacritic上获取正确的游戏页面,拉取其数据,解析特定部分,然后在我们的页面显示数据.

基本上当您选择要交易的游戏时,我们希望一个小div可以显示游戏的信息和评级.我想要这样做,以了解更多,并从这个项目中得到一些东西,我没有必要开始.

我想知道有没有人能告诉我从哪里开始.我不知道如何从页面提取数据.我仍然试图找出是否需要尝试写一些东西来自动搜索游戏的标题,找到这个页面,或者我可以找到一些方法直接进入游戏的页面.一旦我收到了数据,我就不知道如何提取我需要的具体信息.

其中一个不容易的事情是,我正在学习c和c#和asp,所以我不断得到我的电汇.如果有人能指出我正确的方向,这将是一个很大的帮助.谢谢

解决方法

这个小例子使用 HtmlAgilityPack,并使用XPath选择器来获取所需的元素.
protected void Page_Load(object sender,EventArgs e)
{
    string Url = "http://www.Metacritic.com/game/pc/halo-spartan-assault";
    HtmlWeb web = new HtmlWeb();
    HtmlDocument doc = web.Load(Url);

    string Metascore = doc.DocumentNode.SelectNodes("//*[@id=\"main\"]/div[3]/div/div[2]/div[1]/div[1]/div/div/div[2]/a/span[1]")[0].InnerText;
    string userscore = doc.DocumentNode.SelectNodes("//*[@id=\"main\"]/div[3]/div/div[2]/div[1]/div[2]/div[1]/div/div[2]/a/span[1]")[0].InnerText;
    string summary = doc.DocumentNode.SelectNodes("//*[@id=\"main\"]/div[3]/div/div[2]/div[2]/div[1]/ul/li/span[2]/span/span[1]")[0].InnerText;
}

通过使用您的网络浏览器(我使用Chrome)开发人员工具,获取给定元素XPath的简单方法是:

>打开开发工具(Windows上的F12或Ctrl Shift C或Mac的Command Shift C).
>选择您希望XPath的页面中的元素.
>右键单击“元素”选项卡中的元素.
>点击“复制为XPath”.

您可以将其完全按照c#(如我的代码所示)粘贴,但请确保转义引号.

您必须确保使用一些错误处理技术,因为如果Web Scrapping更改页面的HTML格式,可能会导致错误.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...