我最近发现了 Xidel,所以我不是专家,但在我看来它是一个非常强大的瑞士刀命令行抓取工具,应该被更多人知道。
现在,为了回答您的问题,我认为以下(使用 html 模板)完全符合您的要求:
xidel -q page1.html --extract-exclude=name -e "<name>{name:=text()}</name>*" -f "<url>{link:=text()}</url>*" -e "<info>{string-join(($name, text()), ', ')}</info>*" --hide-variable-names
或者,使用 CSS 选择器甚至更短:
xidel -q page1.html --extract-exclude=name -e "name:=css('name')" -f "link:=css('url')" -e "css('info')/string-join(($name,.),', ')" --hide-variable-names
或者,用 XPath 最短:
xidel -q page1.html --extract-exclude=name -e name:=//name -f link:=//url -e "//info/string-join(($name,.),', ')" --hide-variable-names
可能的最短行(但不是 CSV 格式)是:
xidel -q page1.html -e //name,//info -f //url
以上命令适用于 Windows,因此请确保在 mac/ux 上交换引号 双引号!
如果您需要解释行中的不同部分,请询问... :-) 干杯!