【问题标题】:cURL Scraping Wrong WebpagecURL 抓取错误的网页
【发布时间】:2018-08-22 05:40:08
【问题描述】:

我正在尝试在 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的网页数据。有解决办法吗?感谢您的帮助。

【问题讨论】:

    标签: macos curl cookies web-scraping


    【解决方案1】:

    您需要将 url 部分用引号括起来。

    【讨论】:

      【解决方案2】:

      & 是一个 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 元字符(特别是通配符)。在这种情况下,它可能不会造成任何麻烦,但最安全的做法是引用或转义它以防万一。而且由于很难准确跟踪哪些字符会造成麻烦,因此我建议您引用而不是转义,并且只引用您完全不确定的所有内容。

      【讨论】:

      • 非常感谢!非常感谢您为我简化它,这是一个巨大的帮助
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 2014-11-01
      相关资源
      最近更新 更多