2011-01-17 4 views
15

PHP에서 wget 및 curl을 사용하여 this 페이지에서 데이터를 가져 오려고합니다. 브라우저를 사용하여 볼 수있는 것처럼 기본 결과는 20 개이지만 GET 매개 변수 iip을 x로 설정하면 x 항목 (즉, http : // www.example.com/ foo? a = 26033 & b)을 가져올 수 있습니다. = 100Curl 및 wget : GET 매개 변수가 사용되지 않는 이유는 무엇입니까?

문제는 iip 매개 변수가 브라우저에서만 작동한다는 것입니다. wget 또는 curl을 사용하여 마지막 링크를 가져 오려고하면 20 개의 항목 만 반환됩니다. 왜? 명령 줄에서 다음을 시도하십시오.

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

GET 매개 변수 iip을 사용할 수없는 이유는 무엇입니까?

답변

33

를 추가해보십시오 따옴표 :

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

& 가능성이 문제의 원인이되는 명령 행에 특별한 기능이 있습니다.

+0

껍질에서 작동합니다. 문제는 실제로 PHP에서 이것을 사용하고 있다는 것입니다. 그래서 곱슬 곱슬 함을 따옴표로 묶어야합니다. – caxpeyr

3

인수를 인용 해보십시오. 적어도 cmd에서 &은 개별적으로 실행되는 두 개의 명령을 구분하는 데 사용됩니다.

2
당신은 &는 쉘 스크립트에서 특별한 의미를 가지고 있기 때문에, 하나 '또는'에서 URL을 둘러싸해야합니다

... 그건 당신에게주지 :

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

& 쉘의 예약 된 단어입니다 . 그냥 이런 식으로 도망 간다 \&

관련 문제