我尝试从网站上抓取数据。目标是并非总是提供所有详细信息的站点。例如,一个配置文件已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