2013-10-23 3 views
1

tl; dr : httplib를 사용하여 사이트에 대한 연결을 생성합니다. 나는 실패했다, 나는 약간의지도를 좋아할 것이다!httplib을 사용하여 Python 웹 사이트에 연결

몇 가지 문제가 발생했습니다. 파이썬의 소켓과 httplib에 대해 읽었습니다. 구문에 문제가있는 것 같습니다.

httplib.HTTPConnection(host[, port[, strict[, timeout[, source_address]]]]) 

방법 "source_address"행동 않습니다

connection = httplib.HTTPConnection('www.site.org', 80, timeout=10, 1.2.3.4) 

구문은 이것이다 : 여기

은 무엇입니까? IP 주소를 사용하여 요청할 수 있습니까? 사용자 에이전트가 필요하지 않습니까?

또한 연결이 성공했는지 어떻게 확인합니까?

if connection: 
print "Connection Successful." 

(지금까지 내가 아는 한, HTTP는 요청이 때 "당신이 살아있다"핑 (ping)마다 1 초, 두 클라이언트 & 서버로 괜찮 한, 그것은있을거야 필요하지 않습니다 처리 그래서 난 수 없습니다 계속 핑)

+0

왜 urllib (2) 또는 요청이 아닌 httplib을 사용합니까? –

+0

안녕하세요 - 2.7.5를 사용하고 있습니다.하지만 urllib을 파헤 치고 어떻게 움직이는 지 보겠습니다. 고맙습니다! 또한 "요청"에 대해 알지 못했습니다. 내가 그들을 찾아 볼게. 고마워. –

답변

1
실제로 웹 사이트에 연결하지 않는 객체를 생성

:..
HTTPConnection.connect(): Connect to the server specified when the object was created.

source_address 어떤 요청과 함께 서버로 전송 될 것 같지만 그렇지 않은 은 효과가있는 것 같습니다. 왜 사용자 에이전트를 사용해야하는지 잘 모르겠습니다. 어느 쪽이든 선택적 매개 변수입니다.

이 이상한 연결이 이루어 졌는지 확인할 수없는 것 같습니다.

당신이 웹 사이트 루트의 내용을 얻을 수 있습니다 무엇을 원하는 가정, 당신은이를 사용할 수 있습니다

from httplib import HTTPConnection 
conn = HTTPConnection("www.site.org", 80, timeout=10) 
conn.connect() 

conn.request("GET", "http://www.site.org/") 
resp = conn.getresponse() 

data = resp.read() 
print(data) 

솔직히 생각

합니다 (HTTPConnection documentation에서 함께 난리), 사용하지 않아야 httplib가 아니라 urllib2 또는 다른 저급 HTTP 라이브러리가 있습니다.

+0

놀라운! 그것은 확실히 작동하지만 난이 오류가 발생합니다 : http://prntscr.com/1z83aw 내 멍청한 녀석은 내가 UA가 필요하므로 서버가 내가 어디에서 요청하는지 이해할 것입니다. 어떻게 생각해? –

+0

이상한 점 - 왜 형식이 잘못된 요청을 보내는 것입니까? 'source_address'를 사용하고 있습니까? 그렇다면 1.2.3.4가 아닌 정당한 IP를 보내고 있습니까? –

+0

다른 호스트 (404, 400, 302 등)에서 다른 오류를 발생시키는 것 같습니다. 그것은 그것이 일을하고 있다는 것을 의미합니다. 그러나 아니오, 지금 source_address를 사용하지 않습니다! –