我做了urllib2,我下载了网页的htmlSource.如何在1行上完成所有这些操作?

TIM*_*MEX -5 python

urlReq = urllib2.Request(theurl)
urlReq.add_header('User-Agent',random.choice(agents))
urlResponse = urllib2.urlopen(urlReq)
htmlSource = urlResponse.read()
Run Code Online (Sandbox Code Playgroud)

如何在一行中创建htmlSource,而不是多行?

ton*_*nfa 9

你无法真正做到这一点,唯一可能的事情是将响应和源放在同一条线上.或者你可以;在语句之间使用,但那很难看.

但更重要的是,你为什么要那样做?为什么让它全部上线更好?

>>> import this

The Zen of Python, by Tim Peters

...
Readability counts.
...
Run Code Online (Sandbox Code Playgroud)


Len*_*bro 6

如何在一行中做到这一点?这就是功能的用途.像这样:

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

现在你可以在一行中完成:

htmlSource = getsource(theurl)
Run Code Online (Sandbox Code Playgroud)

完成!

更新:

将htmlSource过滤为一个换行符(正如您现在声称的那样)是这样完成的:

htmlSource = htmlSource.replace('\n', '')
Run Code Online (Sandbox Code Playgroud)

你可能需要

htmlSource = htmlSource.replace('\r', '')
Run Code Online (Sandbox Code Playgroud)

同样.我真诚地怀疑它会加速任何事情.