【发布时间】:2019-05-02 11:32:56
【问题描述】:
我正在尝试使用 bash 脚本从网页返回歌曲名称和艺术家。
在查阅了一些 SO 帖子后,我整理了一下:
#!/bin/sh
metadata=$(curl -s marci277.marci.io |
grep -oP '(?<=<p class="title"> ).*?(?= </div>)')
echo $metadata
但是,它只是返回一个空白的空行。
这是此时网页中的相关代码:
<div class="clearfix" id="block1" style="display:block;min-height:114px;width:100%;background:#ffff00;border-top:0px solid #000;border-bottom:0px solid #000;">
<div id="letterbox1" class="letterboxThumbnail base" data-artist="Tom Robinson" data-title="Listen To The Radio" data-album="" data-thumbBGColor="ffffff" >
<img src="img/artists/cache/mThumb_Tom Robinson.jpg" alt="Tom Robinson" width="104" height="104" style="border:1px solid #ffffff;" class="thumbnail" />
</div>
<p class="time">6:22 am CST</p>
<p class="title">Listen To The Radio</p>
<p class="artist">Tom Robinson</p>
</div>
<p class="verticalSpacer"></p>
只有倒数第三和第二节课对我有用。
我还在某处读到这种 grep 技术可能不适用于非 div(在这种情况下,它是一个 p 标签)。如果是这样,我该如何解析这些标签的属性?
【问题讨论】:
-
不要使用正则表达式来解析html或xml,而是使用一些specific tool