2009-10-11 2 views
-5
urlReq = urllib2.Request(theurl) 
urlReq.add_header('User-Agent',random.choice(agents)) 
urlResponse = urllib2.urlopen(urlReq) 
htmlSource = urlResponse.read() 

여러 행 대신 1 행으로 htmlSource를 만드는 방법은 무엇입니까?urllib2를하고 웹 페이지의 htmlSource를 다운로드합니다. 이 모든 것을 한 줄로 만드는 방법은 무엇입니까?

+1

당신은 무엇을 의미합니까 - hrmlsource의 가치를 한 줄 또는 코드로 만드십시오 - 그 이유는 무엇입니까? – Mark

+6

이번 주말에 "Python one-liner"질문은 무엇입니까? 많은 사람들이있는 것처럼 보입니다. @ 렉스 : 왜 한줄짜리 줄까? 파이썬은 단순성과 가독성에 관한 문제입니다. 영리한 원 - 라이너를 원한다면 Perl은 그런 식으로 -> – RichieHindle

+1

@richiehindle 그들은 대부분이 같은 포스터에서 왔습니다. –

답변

9

실제로 그렇게 할 수는 없지만 가능한 유일한 것은 응답과 소스를 같은 줄에 넣는 것입니다. 또는 문장 사이에 ;을 사용할 수 있지만보기가 어렵습니다.

그러나 무엇보다 중요한 이유는 무엇입니까? 온라인으로 모든 것을 갖는 것이 더 나은 이유는 무엇입니까?

>>> import this 

The Zen of Python, by Tim Peters 

... 
Readability counts. 
... 
6

어떻게 한 줄로 만드시겠습니까? 그것이 바로 기능입니다. 이처럼 : 이제

def getsource(url): 
    urlReq = urllib2.Request(url) 
    urlReq.add_header('User-Agent',random.choice(agents)) 
    urlResponse = urllib2.urlopen(urlReq) 
    return urlResponse.read() 

하나 개의 라인에서 작업을 수행 할 수 있습니다

htmlSource = getsource(theurl) 

가 완료!

업데이트 :

htmlSource = htmlSource.replace('\n', '') 

그리고 당신은

htmlSource = htmlSource.replace('\r', '') 

을해야 할 수도 있습니다 (당신이 지금 주장하는 것처럼 당신이 원하는) 하나 LINEBREAK가되도록 htmlSource 필터링은

이 같은 짓을한다 잘. 나는 그것이 무엇이든 속도를 낼 것을 진심으로 의심한다.

관련 문제