如何提取网页中包含"Info science"的A标签内的URL?
解决方案
方案1:使用pup(推荐,HTML解析更可靠)
pup是专门用于命令行解析HTML的工具,能精准定位标签和内容,避免正则处理HTML的局限性。
- 先安装
pup:Ubuntu系统用sudo apt install pup,macOS用brew install pup - 执行命令提取目标URL并保存:
curl -s "https://website_to_scrape" | pup 'a:contains("Info science") attr{href}' > list_links.txt
curl -s:静默模式获取网页内容,避免冗余输出pup 'a:contains("Info science") attr{href}':筛选包含"Info science"文本的<a>标签,直接提取其href属性值
方案2:用curl+grep+sed(无需额外工具,适合简单HTML结构)
如果不想安装新工具,可使用这组命令(仅适用于HTML结构不复杂的场景):
curl -s "https://website_to_scrape" | grep -o '<a[^>]*Info science[^>]*href="[^"]*"' | sed -E 's/.*href="([^"]+)".*/\1/' > list_links.txt
grep -o:只输出匹配到的<a>标签片段,确保片段包含"Info science"和href属性sed -E:通过正则提取href引号内的URL内容
方案3:用awk实现
同样无需额外工具,逻辑与方案2类似:
curl -s "https://website_to_scrape" | awk '/<a.*Info science.*href="/{match($0, /href="([^"]+)"/); print substr($0, RSTART+6, RLENGTH-7)}' > list_links.txt
- 匹配包含"Info science"和
href的<a>标签行 - 用
match函数定位href内容的位置,截取并输出URL
内容的提问来源于stack exchange,提问作者JD76
相关产品推荐
相关产品推荐

