使用linux的curl命令访问带有&的url时候出错的原因

本人今天在用php写爬虫的时候,想定时爬取知乎精选的文章,但是,在写定时任务的时候,发现写了一个curl命令(这条命令是:curl http://xxx.com/index.php?c=study&a=index)之后(爬取的一个网站带有字符&,例如:http://xxx.com/index.php?c=study&a=index这个url里面含有&),一直没有按照我所定的时间去爬取文章。当时在crontab里面写curl命令的时候也没说是curl的命令里面写错了,于是乎,我就一直以为是定时的某个地方出问题了。然而一直没找到问题所在。


折腾了很久我就想算了,要不我直接输入curl命令下载那个网页试试,当我手动输入的时候,我很兴奋,因为它没有把网页下载成功。所以,我锁定了问题的范围。问题不是处在定时上面,而是处在curl这条命令上面。


然后我就想,要不我爬取那个网页的前面一个页面吧,也就是http://xxx.com/index.php?c=study


我惊奇的发现,下载成功了!


所以,我又缩小了问题的范围,问题出在了这个url的写法里面


然后我问了问万能的网友们,说&是特殊字符,在linux系统中&会使进程系统后台运行, 加引号相当于申明地址为字符串


(本人是名大二学生,所用的服务端语言是php,希望能够认识那些用php做很厉害事情的人)

你可能感兴趣的:(使用linux的curl命令访问带有&的url时候出错的原因)