小编Lux*_*uxC的帖子

C#HtmlAgilityPack从特定的h2中选择表

我有一些HTML:

<h2>Results</h2>
 <div class="box">
 <table class="tFormat">
      <th>Head</th>
      <tr>1</tr>
 </table>
</div>

<h2>Grades</h2>
 <div class="box">
 <table class="tFormat">
      <th>Head</th>
      <tr>1</tr>
 </table>
</div>
Run Code Online (Sandbox Code Playgroud)

我想知道如何在"结果"下获得该表

我试过了:

        var nodes = doc.DocumentNode.SelectNodes("//h2");

        foreach (var o in nodes)
        {
            if (o.InnerText.Equals("Results"))
            {
                foreach (var c in o.SelectNodes("//table"))
                {
                    Console.WriteLine(c.InnerText);             
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

它可以工作,但它也获得了Grades h2下的表格

html c# parsing html-agility-pack

6
推荐指数
1
解决办法
1651
查看次数

在Redis中快速插入5000万条记录的方法

我有一个大约 10 GB 的文本文件,包含 5000 万行。对于文件中的每一行,如果记录尚不存在,我将插入该记录,否则将与现有记录的 ID 和当前行 ID 进行比较,如果当前 ID 小于记录 ID,则更新。

目前,插入/比较记录大约需要8个小时

文本文件中的示例数据:

Md5,Id
d41d8cd98f00b204e9800998ecf8427e,1000
e358efa489f58062f10dd7316b65649e,1001
626726e60bd1215f36719a308a25b798,1002
d41d8cd98f00b204e9800998ecf8427e,5002
d41d8cd98f00b204e9800998ecf8427e,0953
626726e60bd1215f36719a308a25b798,0152
Run Code Online (Sandbox Code Playgroud)

我尝试过实现生产者/消费者模式,但生产者速度太快并消耗大量内存,导致 OutOfMemory 异常。

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");

            IDatabase db = redis.GetDatabase();
            int lineCount = 0;
            foreach(var f in File.ReadLines(@"big_text_file.txt").Skip(1))
            {
                lineCount++;
                string[] lines = null;

                lines = f.Split(",")


                if (!db.KeyExists(lines[2]))
                {
                    db.StringSet(lines[2], lines[0]);
                }else //contains key
                {
                    var keypair = db.StringGet(lines[2]);
                    if(Convert.ToInt32(lines[0]) < Convert.ToInt32(keypair))
                    {
                        db.StringSet(lines[2], lines[0]);
                    }
                }
Run Code Online (Sandbox Code Playgroud)

c# redis

1
推荐指数
1
解决办法
6533
查看次数

标签 统计

c# ×2

html ×1

html-agility-pack ×1

parsing ×1

redis ×1