【发布时间】:2016-06-12 03:03:00
【问题描述】:
我已经下载了一个 html 源代码,我正在尝试从中获取一些数据以将其序列化为“json”文件。
这是html源文件:https://drive.google.com/file/d/0BzweTZsfeoxMTWk2LVdnYTJMRUE/view?usp=sharing
在 html 代码中有“2”组我希望从中收集数据。
目前,我设法在这“2”组中获取代码,并使用标签将其显示在两个面板中。我的代码是休闲:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using HtmlAgilityPack;
namespace Parser_Test_1._0
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(@"C:...\bin\Debug\xbFrSourceCode.txt");
string datacollected1 = doc.DocumentNode.SelectNodes("//*[@id=\"favoritesContent\"]/div[2]/div[2]/ul")[0].InnerHtml;
string datacollected2 = doc.DocumentNode.SelectNodes("//*[@id=\"friendsContent\"]/div[2]/div[2]")[0].InnerHtml;
label1.Text = datacollected1;
label2.Text = datacollected2;
}
}
}
我希望从这两个组中收集用户,并为每个用户收集他们各自的数据,以将其序列化为 json 文件。
每个用户用<li ...></li>分隔
对于我希望获得的每个用户:
- 玩家代号:
data-gamertag="this is the gamertag" - Gamerpic:在
class="gamerpicWrapper"src="this is the gamerpic" - 实名:
<div class="realName">this is the realname</div> - 主要信息:
<div class="primaryInfo">this is the primaryinfo</div> - isOnline:
<div class="statusIcon">如果这里有代码,那么在json文件中这个值为真</div>
这是所需“json”文件格式的示例(请注意,下面的代码可能写得不好。):
{
"favorites" :
[
{
"gamertag" : "Gamertag1",
"gamerpic" : "gamerpicURL",
"realname" : "",
"primaryInfo" : "",
"isOnline" : false,
},
{
"gamertag" : "Gamertag2",
"gamerpic" : "gamerpicURL",
"realname" : "realname2",
"primaryInfo" : "primaryinfo2",
"isOnline" : true,
},
{
"gamertag" : "Gamertag3",
"gamerpic" : "gamerpicURL",
"realname" : "",
"primaryInfo" : "",
"isOnline" : false,
},
{
"gamertag" : "Gamertag4",
"gamerpic" : "gamerpicURL",
"realname" : "realname4",
"primaryInfo" : "",
"isOnline" : true,
}
]
"friends" :
[
{
"gamertag" : "Gamertag1",
"gamerpic" : "gamerpicURL",
"realname" : "",
"primaryInfo" : "",
"isOnline" : true,
},
{
"gamertag" : "Gamertag2",
"gamerpic" : "gamerpicURL",
"realname" : "realname2",
"primaryInfo" : "primaryinfo2",
"isOnline" : false,
},
{
"gamertag" : "Gamertag3",
"gamerpic" : "gamerpicURL",
"realname" : "realname3",
"primaryInfo" : "",
"isOnline" : true,
},
{
"gamertag" : "Gamertag4",
"gamerpic" : "gamerpicURL",
"realname" : "",
"primaryInfo" : "",
"isOnline" : false,
}
]
}
如果有人能告诉我如何做到这一点,我将不胜感激。
【问题讨论】:
-
感谢您的建设性批评。我一生中的大部分时间都被编码所吸引,但最近我决定深入尝试它。我决定从学习 C# 开始。为了学习这门语言,我决定从事一个项目并学习试图创建和完成这个项目的语言。在我发布这个问题的那一刻,我正在开始这个项目。我已经想出了如何做我在这个问题中所要求的。并回答你的问题,是的。最初我从 chrome 获得了 xpaths。虽然我不知道如何手动表达和编写 xpath,但我现在知道了。
-
好吧。您需要知道 xpath 才能继续。这次我会帮你的。看看this,我会为你生成一些代码。
-
记得标记正确答案,如果对您有帮助,请至少评论一下。
标签: c# html json visual-studio html-agility-pack