cURL刮错网页

时间:2018-03-13 20:13:36

标签: macos curl cookies web-scraping

我正在尝试使用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的网页数据。有没有解决这个问题?谢谢你的帮助。

2 个答案:

答案 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元字符(特别是一个通配符)。在这种情况下,它可能不会造成任何麻烦,但为了以防万一,引用或逃避它是最安全的。而且由于很难准确地跟踪哪些角色会造成麻烦,我建议引用而不是逃避,只是引用你不确定的所有内容。