2013-04-10 5 views
1

웹 사이트에서 평점을 읽는 크롤링 스크립트를 작성 중입니다.URL에서 변수를 무시하는 php cURL

올바른 콘텐츠를 검색하지 못하기 때문에 컬 부분이 나에게 문제가되고 있습니다.

나는 ajax 스크립트로 데이터베이스에서 URL을 선택합니다. 등급으로 페이지에 올바른 URL을 말 렸지만 Curl은 URL의 변수 부분이없는 페이지를 검색합니다.

은 내가 컬에 전달하고 URL입니다 : $actualurl

http://www.domain.com/epages/xxx.sf/de_DE/?ObjectPath=/Shops/15456062/Products/%22Briefkastenst%C3%A4nder%20Bobiround%22/SubProducts/%22Briefkastenst%C3%A4nder%20Bobiround%20gr%C3%BCn%20RAL6005%22&ViewAction=ViewProductRating

(. 이것은 내가 모든 6 개 등급 (Produktbewertungen를) 읽고 싶은 페이지입니다)

그러나 컬 호출이 페이지에서 viewAction없이 동일한 내용을 얻었을 때 출력을 에코했습니다.

http://www.domain.com/epages/xxx.sf/de_DE/?ObjectPath=/Shops/15456062/Products/%22Briefkastenst%C3%A4nder%20Bobiround%22/SubProducts/%22Briefkastenst%C3%A4nder%20Bobiround%20gr%C3%BCn%20RAL6005%22

내 컬 호출은 다음과 같습니다

  $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
      curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
      curl_setopt($ch, CURLOPT_URL, $actualurl);    
      //read content of $url 
      $result = curl_exec ($ch); 
      curl_close ($ch); 

왜 컬이

너무 감사 많이 난 아직도 곱슬 곱슬에 새로운 오전 (&ViewAction=ViewProductRating로) URL의 마지막 부분을 무시!

편집 나는 4 개 부분에서 위에서 언급 한 URL을 구축 할 수 있습니다. 부분은 다음과 같습니다

$domainroot: http://www.domain.com/ $objectpath: epages/xxx.sf/de_DE/?ObjectPath $ratingurl: %3D%2FShops%2F15456062%2FProducts%2F%2522Briefkastenst%25C3%25A4nder%2520Bobiround%2522%2FSubProducts%2F%2522Briefkastenst%25C3%25A4nder%2520Bobiround%2520gr%25C3%25BCn%2520RAL6005%2522%26amp%3B $viewratings: ViewAction=ViewProductRating 

그리고 마침내

내가 그들을 함께 체인 :

$actualurl = $domainroot.$objectpath.$ratingurl.$viewratings; 
+0

그것은 것처럼 보인다 데이터베이스에 직접 입력하고있다 당신이 그것을 설정하지 않았더라도 CURLOPT_POST 플래그는 활성화되어 있습니다 ... – Borniet

+0

echo curl_error ($ ch); "잘못된 형식"이됩니다. – Shin

+0

@shin 시도했지만 아무것도 출력하지 않습니다. – Owl

답변

0

당신에게 정말 고마워요 너의 도움으로! 너는 내 하루를 보냈다!

도움을 주신 모든 분들께 감사드립니다.

실제로는 엉망인 &입니다. 어떻게 든 스크립트는 데이터베이스의 URL을 입력 할 때 한 &에 &이 URL이 처음으로, preg_match_all와 처가 다시 ​​

$ratingurl = str_replace('&','&',$ratingurl); 

을 변경하고

1

가 쿼리 문자열의 첫 번째 매개 변수가 적절하게 인코딩되어야한다

$queryString = 'ObjectPath=%2FShops%2F15456062%2FProducts%2F%22Briefkastenst' .  
'%C3%A4nder+Bobiround%22%2FSubProducts%2F%22Briefkastenst' . 
'%C3%A4nder+Bobiround+gr%C3%BCn+RAL6005' 
'&ViewAction=ViewProductRating'; 
+0

감사합니다. 나는 4 부분 (도메인 + firstpart + databasepart + viewActionpart)에서 url을 설정하고 있는데, firstpart와 databasepart에 urlencode를 만들려고했지만 이제는 URL이 서버에서 발견되지 않습니다. 인코딩 할 부분은 무엇입니까?이상하게 생각했기 때문에 이상하게 생각했습니다. – Owl

+0

이상하게도이 답변을 이해할 수 없습니다. 당신이 말한 부분을 인코딩하려했지만 서버에서 찾을 수없는 사이트로 항상 나타납니다. – Owl

+0

예제에서 데이터베이스 파트와 첫 번째 파트를 무엇이라고 부릅니까? 쿼리 문자열에서 매개 변수로 전달 된 값은 이미 인코딩 된 값을 디코딩 한 후 urlencode를 사용하여 인코딩해야합니다. 제공되는 인코딩 예제는 다음과 같이 얻어집니다 (ObjectPath 매개 변수 값이 부분적으로 인코딩 된 것처럼) : $ objectPathValue = urlencode (urldecode ('/ Shops/15456062/Products/% 22Briefkastenst % C3 % A4nder % 20Bobiround % 22/SubProducts/% 22Briefkastenst % C3 % A4nder % 20Bobiround % 20gr % C3 % BCn % 20RAL6005 % 22 '))' –