【发布时间】:2012-02-22 00:35:13
【问题描述】:
我正在尝试使用 grep 来获取 HTML 文件中 jpg 图像的完整 url 地址。一个问题是其中没有很多换行符,所以当我使用 grep 时,它会获取路径,但还有很多其他我不感兴趣的东西。我怎样才能获取 jpg 图像的 url?
【问题讨论】:
-
您能否提供一个 HTML 示例和您当前的
grep命令?
标签: parsing grep html-parsing
我正在尝试使用 grep 来获取 HTML 文件中 jpg 图像的完整 url 地址。一个问题是其中没有很多换行符,所以当我使用 grep 时,它会获取路径,但还有很多其他我不感兴趣的东西。我怎样才能获取 jpg 图像的 url?
【问题讨论】:
grep 命令?
标签: parsing grep html-parsing
一个sed 命令
sed -n '/<img/s/.*src="\([^"]*\)".*/\1/p' yourfile.html
或使用ERE (extended regular expressions) 来避免上述表达式中的backslashes:
sed -E -n '/<img/s/.*src="([^"]*)".*/\1/p' yourfile.html
一个基本的grep 命令
grep -o '<img[^>]*src="[^"]*"' yourfile.html
两个连续的基本grep 命令
grep -o '<img[^>]*src="[^"]*"' yourfile.html | grep -o '"[^"]*"'
一个使用 Perl Regex 的 grep 命令 (PER)
grep -Po '<img[^>]*src="\K[^"]*(?=")' yourfile.html
将ack 用作类似grep 的替换
sudo apt install ack
ack -o '<img[^>]*src="\K[^"]*(?=")' yourfile.html
下载网页,由s-hunter提出
curl -s example.com/a.html | sed -En '/<img/s/.*src="([^"]*)".*/\1/p'
【讨论】:
grep)。为了完成您的回答,我使用以下组合下载了所有需要在本地自动创建的路径的图像(在我的情况下,它用于 csv 文件中的 html):cat myfile.csv | grep -o 'src=""[^"]*"' | cut -b 5- | xargs wget -p
-r。这是正确的命令行:curl www.a-web-page-url.com/ | sed -n -r '/<img/s/.*src="([^"]*)".*/\1/p'。我正在编辑/改进我的答案以明确。玩得开心,新年快乐 ;-)