使用wget和grep从页面中提取超链接

时间:2019-05-19 17:21:34

标签: regex bash grep wget pcre

我正在尝试使用wget和grep提取单个页面中的所有超链接,并且我使用PCRE找到了此代码以获取所有超链接。

但是我对regex或html并不是很熟悉,所以我真的想知道这是否是解决问题的合理方法,或者是否有更好的方法。 我对此也有疑问。您真的需要转义报价吗?我测试了几次,但似乎没有什么不同。

wget https://google.com -q -O - | grep -Po '(?<=href=\")[^\"]*'

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您的命令将抓取完全在一行上的所有href字符串href="..."的内容。

如果整个字符串都被\"包围,则无需单独转义双引号'single quotes'。引用的目的是防止字符被外壳解释。唯一需要转义双引号的时间是在您允许扩展时,例如:

foo=href
grep -Po "(?<=${foo}=\")[^\"]*"

这与

完全相同
grep -Po '(?<=href=")[^"]*'

哪个意思

  • Grep,使用P CRE
  • 只返回o一场比赛
  • 寻找任何以(?<=...)为后缀的文字字符串href="
  • 匹配所有非双引号[^"]
  • 零次或多次*

如果您解析*,则使用<a href="">可能会返回一个空字符串。您可以使用+(一次或多次)而不是*(零次或多次)。