2014-02-23 2 views
0

python 2.x 스크립트에서 https 페이지가 특정 콘텐츠를 반환하는지 확인하는 기능을 찾고 있습니다 (발견하기 위해 페이지 내용을 구문 분석해야 할 가능성이 높습니다). 이 페이지는 htpasswd 프롬프트도 가지고 있습니다. htpasswd 프롬프트는 컨텐트를 볼 수 있도록 사용자 이름과 암호로 인증해야합니다. 따라서 사용자 이름과 암호를 하드 코딩하여 페이지를 가져올 수있는 기능을 제공하는 모듈 또는 기타 기능을 찾고 있다고 가정합니다. 출력을 처리 할 수 ​​있습니다 (404 페이지를 나타내는 키워드와 동일한 것이 있는지 일명 확인).).python에 https 웹 페이지가 있는지 확인하십시오.

나는 http://docs.python.org/2/library/httplib.html을보고 있었지만 찾고있는 것처럼 보이지 않습니다.

답변

2

모듈을 사용하면 httplib 모듈을 사용하지만 HTTP 프로토콜을 수동으로 구동하지 않아도되는 더 쉬운 방법이 있습니다. 응답이 성공하지 않았거나 찾을 수 없음 404을 반환 경우는 예외가 발생합니다

import requests 

auth = ('someusername', 'somepassword') 
response = requests.get(yoururl, auth=auth) 
response.raise_for_status() 

: (첫번째 외부 모듈이 필요 설치)를 requests library를 사용

아마 간단합니다.

response.content (바이트 문자열) 또는 response.text (유니 코드 응답)으로 응답 본문을 더 파싱 할 수 있습니다.

처럼 보일 것 urllib2 module를 사용하여, 단지 표준 라이브러리를 사용하여 :

import urllib2, base64 

request = urllib2.Request(yoururl) 
authstring = base64.encodestring('{}:{}'.format('someusername', 'somepassword')).strip() 
request.add_header("Authorization", "Basic {}".format(authstring)) 
response = urllib2.urlopen(request) 

if not 200 <= response.getcode() < 400: 
    # error response, raise an exception here? 

content = response.read() 
try: 
    text = content.decode(response.info().getparam('charset', 'utf8')) 
except UnicodeDecodeError: 
    text = content.decode('ascii', 'replace') 

content는 응답 본문의 바이트 문자열의 내용을, 그리고 text는 시점까지, 유니 코드 값이 될 것이다 .

+0

아주 좋습니다. '요청'이 잘 작동하는 것 같습니다. \영형/ – Peter

관련 문제