Bash 检索网页的特定部分
我需要用从网页的一部分检索到的数据填充BASH脚本中的列表。目前,我已经手动创建了一个静态列表,但我希望动态生成列表内容。这样,如果将新项目添加到页面中,脚本的后续运行将反映这些新项目 源页面: 我想摘录标题为“macOS、iOS和tvOS”的部分,最后列出如下列表:Bash 检索网页的特定部分,bash,list,dynamically-generated,Bash,List,Dynamically Generated,我需要用从网页的一部分检索到的数据填充BASH脚本中的列表。目前,我已经手动创建了一个静态列表,但我希望动态生成列表内容。这样,如果将新项目添加到页面中,脚本的后续运行将反映这些新项目 源页面: 我想摘录标题为“macOS、iOS和tvOS”的部分,最后列出如下列表: updateServers="appldnld.apple.com 80 gg.apple.com 80 gg.apple.com 443 gnf-mdn.apple.com 443 gnf-mr.apple.c
updateServers="appldnld.apple.com 80
gg.apple.com 80
gg.apple.com 443
gnf-mdn.apple.com 443
gnf-mr.apple.com 443
gs.apple.com 80
gs.apple.com 443
ig.apple.com 443
mesu.apple.com 80
mesu.apple.com 443
ns.itunes.apple.com 443
oscdn.apple.com 80
oscdn.apple.com 443
osrecovery.apple.com 80
osrecovery.apple.com 443
skl.apple.com 443
swcdn.apple.com 80
swdist.apple.com 443
swdownload.apple.com 80
swdownload.apple.com 443
swpost.apple.com 80
swscan.apple.com 443
updates-http.cdn-apple.com 80
updates.cdn-apple.com 443
xp.apple.com 443"
最后,我希望将页面的每个部分输出到自己的单独列表中,但目前我主要关心的是上面的部分
提前谢谢大家。这是一个很棒的社区。HTML解析器对于此类任务(例如Ruby的Nokogiri或Python的Beautifulsoup)是一个更好的工具。对于纯Bash解决方案,您可以使用此脚本(假设
-P
支持grep):
我的输出与你的不匹配,我正在使用macOS。我收到以下
grep:invalid option--z用法:grep[-abcdefghhiijllmnooqrsussvvwxz][-A num][-B num][-C[num]][-e pattern][-f file][-binary files=value][-color=when][-context[=num][-directories=action][-label][-line buffered][-null][pattern][file…]
您的grep版本似乎不支持-z
选项。您可以使用grep--version
检查grep版本。此解决方案适用于GNU grep
#!/bin/bash
wget -q https://support.apple.com/en-us/HT210060 -O- \
| \grep -ziP "(?s)<h3>macos.*?<h3>" \
| xargs -0 \
| \grep -P "<tr><td>|<td>[\d, ]+</td>" \
| sed 's:.*<td>\(.*\)</td>:\1:'
$ script.sh
appldnld.apple.com
80
gg.apple.com
443, 80
...
80
updates.cdn-apple.com
443
xp.apple.com
443