python urllib.urlopen () 호출은 브라우저가 수락하는 URL에서 작동하지 않습니다.

StackOverflow https://stackoverflow.com/questions/1335439

  •  20-09-2019
  •  | 
  •  

문제

내가 Firefox를 가리키면 http://bitbucket.org/tortoisehg/stable/wiki/home/releasenotes, 나는 HTML 페이지를 얻는다. 그러나 내가 파이썬에서 이것을 시도하면 :

import urllib

site = 'http://bitbucket.org/tortoisehg/stable/wiki/Home/ReleaseNotes'
req = urllib.urlopen(site)
text = req.read()

나는 다음을 얻는다 :

500 내부 서버 오류 서버가 내부 오류 또는 오해가 발생하여 요청을 완료 할 수 없었습니다.

내가 뭘 잘못하고 있죠?

도움이 되었습니까?

해결책

당신은 잘못된 일을하지 않으며, Bitbucket은 일부 사용자 에이전트 감지를 수행합니다 (예 : 수은 클라이언트를 감지하기 위해). 단지 사용자 에이전트 변경 수정합니다 (그렇지 않은 경우 urllib 기판으로).

이것에 관한 문제를 채워야합니다. http://bitbucket.org/jespern/bitbucket/issues/new/

다른 팁

당신은 표면에 아무런 잘못이없고 오류 페이지에서 말한 것처럼 사이트 관리자에게 문의 해야하는지 설명 할 수있는 서버 로그가있는 것이기 때문에 사이트 관리자에게 연락해야합니다. 다행히 Bitbucket의 사이트 관리자는 친절한 무리입니다!

의심 할 여지없이 브라우저가 한 방향으로 설정하는 헤더 또는 헤더 조합이 있으며, Urllib은 다른 방법으로 설정하며 서버의 버그가 후자의 경우 간질이됩니다. Firefox의 Firebug로 예를 들어, 헤더가 무엇인지 정확히보고 서버 버그를 분리 할 때까지 재현 할 수 있습니다. 아마도 그것은 아마도 그 버그를 간질이게하는 사용자 에이전트 또는 "수락"-ish 헤더 일 것입니다.

나는 당신이 잘못하고 있다고 생각하지 않습니다.이 서버가 바로 아래로 된 것 같습니다. 귀하의 스크립트는 나에게 잘 작동했습니다 ( 'Text'에는 브라우저에 표시된 것과 동일한 데이터가 포함되어 있음).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top