2014-05-25 2 views
0

read이 오류가 발생하면 URL을 더 잘 지정해야합니다. 표시되거나 액세스 가능한 두 옵션 중 하나를 지정해야한다고 가정합니다. 어떻게해야합니까?http 요청 상태에서 옵션을 얻는 중 300

urllib 또는 튜토리얼에서 아무것도 찾을 수 없습니다. 내 가정은 사실입니까? 가능한 URL을 읽을 수 있습니까?

브라우저에서이 URL을 열면 새 URL로 리디렉션됩니다.

URL입니다 I 액세스하려고 : http://www.uniprot.org/uniprot/P08198_CSG_HALHA.fasta
내가 리디렉션하고 새 URL : http://www.uniprot.org/uniprot/?query=replaces:P08198&format=fasta

import urllib.request 
try: 
    response = urllib.request.urlopen(url) 
except urllib.error.HTTPError as e: 
    if int(e.code) == 300: 
     # what now? 

답변

0

코드 (300)는 서버에서 반환 된 상태를 말하는, 요청이 어떻게 든 완료되지이며, 더 구체적이어야한다.

URL을 테스트하기 위해 http://www.uniprot.org/에서 검색을 시도하고 "P08198"검색을 입력했습니다. 이 단백질 코드가 하위 또는 서브 코드 Q9HM69, B0R8E4 및 P0DME1로 분할되면서이 날

Demerged into Q9HM69, B0R8E4 and P0DME1. [ List ] 

보인다 나에게 말하는 페이지 http://www.uniprot.org/uniprot/P08198 결과, 일부 단백질에 대한 쿼리 내용이 상세하지 않습니다.

결론

상태 코드 (300)는 요청이 어떻게 든 모호한 것으로, 서버 응용 프로그램에서 신호입니다. 방법은 응용 프로그램에 따라 다르며 Python 또는 HTTP 상태 코드와 아무 관련이 없으므로 응용 프로그램 논리에서 좋은 URL에 대한 자세한 정보를 찾아야합니다.

+0

그렇다면 파이썬이 이러한 다른 URL에 대한 링크를 얻는 방법은 없습니까? 수동으로해야합니까? – Llopis

+0

앱에서이 페이지를 반환 할 수 있습니다.이 경우 콘텐츠를 검색하고 따라야 할 링크를 수집 할 수 있습니다. 이 작업은 두 단계로 진행됩니다. 첫 번째 - 페이지를 가져옵니다 (200 번째 코드가 아닌 페이지는 문제가되지 않음). 그런 다음 페이지를 구문 분석하고 제공된 URL을 검색합니다. –

+0

미안하지만, 혼자 할 수 있을지 모르겠다. 할 일을 배우기 위해 소스를 가르쳐 주시겠습니까? 인쇄 할 때 (e.code) 'b'''을 읽을 수 있습니다. 따라서 다른 방법으로 사용해야하는지 또는 라이브러리를 잘못 사용하고 있는지 알 수 없습니다. – Llopis