JSoup/NSoup对CSS类名称中含空格的处理

时间:2021-10-16 20:24:35

在爬虫过程中,经常需要对网页内容进行信息提取。


而在这处理过程中,JSoup是经常常用的库。(Nsoup是Jsoup的.net开发版本)


从JSOUP的官网例子中,可以处理几乎任何节点数据。


但是在查找某个类别的CSS名称过程中,由于名称存在空格,导致其提取内容问题返回为空。


相信这个问题大家经常遇到,于是在此将过程记录一下。


如下面一个例子:

<div class="baseinfo-feild abstract">
                    <div class="row clear zh">
                        <div class="pre ">
                            <span>摘要:</span>
                        </div>
                        <div class="text">在考虑咽喉区进路交叉和到发线技术作业安全的前提下,将到发线和咽喉区作为整体进行综合优化,以到发线运用和咽喉区进路运用均衡为优化目标,基于0-1整数规划方法构建到发线运用模型,并编制模拟退火求解算法.以兰州站为对象进行案例分析,结果表明:到发线和咽喉的运用都达到了均衡并且使占用同一到发线相邻两列列车时间间隔增大,若发生晚点等突发事件便于车站作业调整.所构建模型能够有效提高车站技术设备利用均衡性以及车站作业的抗干扰性,为车站作业计划编制提供优化方法.</div>
                    </div>
            </div>


其中:按照下面进行编写代码:



            Document doc = NSoupClient.Parse(html);
            var abs = abstractS.Select("div.row clear zh");

这样返回的abs内容为空。即出现空格的情况下,程序中会默认进行截断,只返回row的CSS类,而这导致不匹配而返回空。


最终查看代码,终于搞定,即要对CSS中的空格进行处"理。即用"."代替空格。


            var abs = abstractS.Select("div.row.clear.zh");


用这种方式,就可以提取到相关的信息.