Curl and wget: why isn't the GET parameter use

2020-06-08 12:50发布

问题:

I am trying to fetch data from this page using wget and curl in PHP. As you can see by using your browser, the default result is 20 items but by setting the GET parameter iip to number x, I can fetch x items, i.e. http:// www.example.com/ foo ?a=26033&b=100

The problem is that the iip parameter only works in browsers. If I try to fetch the last link using wget or curl, only 20 items are returned. Why? Try this at the command-line:

curl -O http://www.example.com/foo?a=26033&iip=b
wget http://www.example.com/foo?a=26033&iip=b

Why can't I use the GET parameter iip?

回答1:

Try adding quotes:

curl -O 'http://www.objektvision.se/annonsorer?ai=26033&iip=100'
wget 'http://www.objektvision.se/annonsorer?ai=26033&iip=100'

The & has special functionality on the command line which is likely causing the issues.



回答2:

Try quoting the argument. At least in cmd, & is used to delimit two commands that are run individually.



回答3:

You'll have to enclose your URL in either " or ', since the & has a special meaning in shellscript... That'll give you:

curl -O "http://www.objektvision.se/annonsorer?ai=26033&iip=100"
wget "http://www.objektvision.se/annonsorer?ai=26033&iip=100"


回答4:

& is a reserved word in shell. Just escape it like this \&



标签: shell curl wget