我正在尝试使用Mac终端中的curl
抓取需要登录的网页,但似乎无法正确使用。我有一个cookies.txt
文件,其中包含我正在阅读命令的登录信息,但是我无法将其写入目标页面。我跑的时候
curl -b /Users/dwm8/Desktop/cookies.txt -o /Users/dwm8/Desktop/file.txt https://kenpom.com/team.php?team=Duke&y=2002
file.txt
的内容是来自https://kenpom.com/team.php?team=Duke而非https://kenpom.com/team.php?team=Duke&y=2002的网页数据。有没有解决这个问题?谢谢你的帮助。
答案 0 :(得分:1)
您需要将url部分包装在引号中。
答案 1 :(得分:1)
&
是一个shell元字符,用于分隔命令并指示命令应该在后台运行之前。所以,你的命令:
curl ... https://kenpom.com/team.php?team=Duke&y=2002
被解析为两个单独的命令:
curl ... https://kenpom.com/team.php?team=Duke & # The & means run curl in the background
y=2002 # This just sets a shell variable
为了让shell将&
视为curl
的参数而不是命令分隔符,您需要引用它(单引号或双引号可以工作)或者用反斜杠逃避它:
curl ... 'https://kenpom.com/team.php?team=Duke&y=2002'
curl ... "https://kenpom.com/team.php?team=Duke&y=2002"
curl ... https://kenpom.com/team.php\?team=Duke\&y=2002
哦,请注意我在最后一个例子中也逃过了?
?那是因为?
也是一个shell元字符(特别是一个通配符)。在这种情况下,它可能不会造成任何麻烦,但为了以防万一,引用或逃避它是最安全的。而且由于很难准确地跟踪哪些角色会造成麻烦,我建议引用而不是逃避,只是引用你不确定的所有内容。