2012-11-25 3 views
0
이 사이트에서 우편 번호를 얻기 위해 노력하고 있어요

:얻기 데이터 wikisource.org 사이트

http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce

내 코드는 간단하다 :

<?php 
    $postalCode = $_GET['code']; 

    $httpAddr = 'http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce/Okr%C4%99g_'.$postalCode[0].'_'.$postalCode[0].$postalCode[1].'-xxx'; 

    file_get_contents($httpAddr); 
    ?> 

을하지만 난 03 $을 PostalCode을 설정하면 -000 (도 01-000, 05-000, 그러나 07-000 위해, 61-000은 62-000이 작동) 나는 기기 수령하고 오류 :

Warning: file_get_contents(http://pl.wikisource.org/wiki/Lista_kod%C3%B3w_pocztowych_w_Polsce/Okr%C4%99g_0_03-xxx): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /var/www/clients/client1/web4/web/ofix/test.php on line 5 

페이지 주소가 정확합니다. 웹 브라우저에서 복사하여 지나갈 수 있습니다. 아이디어가 있으십니까?

+0

를 웹 서버가 아마 특정 사용자 에이전트를 차단하고 있습니다. 귀하의 웹 브라우저에 동일한 URL을 입력하는 것은 그다지 좋은 증거가 아닙니다. –

+0

그냥 일자리를 잃지는 않을 것입니다, 당신은 그 데이터를 반복적으로 긁어 낼 필요가 없습니까? –

+0

하지만 02-000과 같은 코드에서는 항상 작동하며 ex는 01로 끝나는 코드에서는 작동하지 않습니다. – jankes83

답변

0

궤도의 경주가 의심스러워 웹 서버가 PHP의 요청을 차단하고있는 것 같습니다.

대신 file_get_contents()cURL이 세부 사항을 계시 사용 :

HTTP/1.0 403 Forbidden
Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.

웹 브라우저는 그 요청에 유효한 사용자 에이전트 헤더를 보내는 이유는 브라우저에서 확인을하지만 PHP에서 페이지가로드됩니다.

PHP에서이 URL을로드하는 테스트에서 HTTP 상태 코드 200이 성공하고 403이 실패 할 때가 있습니다. 오류 메시지에 스크립트 이 차단 될 수 있습니다 (가끔씩 그렇지 않을 수도 있음). 차단됨).

편집

하는 추가 정보를 원하시면이 질문을 참조하십시오 : How to get results from the Wikipedia API with PHP?

+0

그래서 나는 내 자신의 user_agent를 설정했고 이제는 완벽하게 작동합니다. 고맙습니다. – jankes83