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

时间:2009-10-11 10:50:04

标签: python

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

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

2 个答案:

答案 0 :(得分:9)

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

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

>>> import this

The Zen of Python, by Tim Peters

...
Readability counts.
...

答案 1 :(得分: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 = htmlSource.replace('\n', '')

你可能需要

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

也是。我真诚地怀疑它会加速任何事情。