如何通过os.system()从stdin获取数据?
我找到的唯一可靠的方法来用脚本从维基百科下载文本,就是使用cURL。目前我能做到的就是通过调用 os.system()
来实现。虽然在Python的命令行中输出看起来正常,但我似乎无法让这个函数返回其他信息,只能得到一个退出代码(0
)。另外,如果有人能教我怎么正确使用 urllib
,那就太好了。
3 个回答
0
除了使用urllib,你还可以试试libCurl的Python接口。
2
回答这个问题,Python有一个叫做subprocess的模块,可以让你和新启动的进程进行互动。http://docs.python.org/library/subprocess.html#subprocess.Popen
这个模块可以让你读取被调用进程的输出内容(stdout),甚至可以往它的输入(stdin)发送数据。
不过,正如你所说,urllib是一个更好的选择。如果你在StackOverflow上搜索,我相信你会找到至少10个相关的问题……
7
import urllib
sock = urllib.urlopen("http://en.wikipedia.org/wiki/Python_(programming_language)")
htmlsource = sock.read()
sock.close()
print htmlsource
这段代码会打印出Python维基百科文章的源代码。我建议你去看看《Dive into Python》,里面有更多详细信息。
下面是一个使用urllib2的例子,来自 Python库参考手册:
import urllib2
f = urllib2.urlopen('http://www.python.org/')
print f.read(100)
补充:你可能还想看看 wget。
补充2:根据S.Lott的建议,添加了urllib2的例子。