gpt4 book ai didi

xpath - 即使某些标签不存在,如何在xpath中始终具有相同数量的结果?

转载 作者:行者123 更新时间:2023-12-03 16:09:27 26 4
gpt4 key购买 nike

我尝试从网站抓取数据。目标是并非总是提供所有详细信息的站点。例如,一个配置文件指定了name, birthday,而另一个配置文件仅指定了name

现在,我尝试使用xidel和xpath来抓紧这些标签,当有时不会丢失一些标签时(因为不存在某些细节),它们就像一个符咒一样工作。

因此,我要求一种解决方案,在其中可以用空标签填充这些不存在的标签,以便最终得到一组长度相同的数据。

之后,我将数据转换为csv,并且在缺少标签的情况下,所有数据都关闭了一列。

我的xidel请求看起来像这样:

xidel 'http://www.icaec.org/users/index' -f '//section[@id="content-area"]//article//h5/a' -e 'concat("`",join(//div[@id="members-info"]/(h5 | span) | //div[@class="row pic-professionsal-details"]/div[2]/div | //div[@class="row pic-professionsal-details"]/following-sibling::div/div[1]//div,"`;`"),"`")' | sed "s/\"/\\\"/g" | sed "s/\`/\"/g" >> icaec.csv


有问题的xpath表达式是这样的:

'concat("`",join(//div[@id="members-info"]/(h5 | span) | //div[@class="row pic-professionsal-details"]/div[2]/div | //div[@class="row pic-professionsal-details"]/following-sibling::div/div[1]//div,"`;`"),"`")'


或多或少是

//div[@id="members-info"]/(h5 | span)
//div[@class="row pic-professionsal-details"]/div[2]/div
//div[@class="row pic-professionsal-details"]/following-sibling::div/div[1]//div

最佳答案

Xidel支持XPath和XQuery 3.0,因此您可以创建序列,在其中用一些默认值(例如,给定的值)替换缺少的项目

<items>
<item>
<foo>foo 1</foo>
<bar>bar 1</bar>
</item>
<item>
<foo>foo 2</foo>
</item>
<item>
<bar>bar 3</bar>
</item>
</items>


XQuery 3.0表达式

string-join(//item!string-join(((foo, 'foo default')[1], (bar, 'bar default')[1]), ';'), '&#10;')


输出

foo 1;bar 1
foo 2;bar default
foo default;bar 3

关于xpath - 即使某些标签不存在,如何在xpath中始终具有相同数量的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40573861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com