2014-09-05 83 views
0

我想打开一个网页并在文本文件中写入页面。这是迄今为止的代码,它不起作用。 Cam有谁给我一个关于我做错了什么的总体想法?打开网页并写入文本文件

import urllib 
opener = urllib.FancyURLopener({}) 
f = opener.open("http://www.python.org/") 
g = open("data2.txt", "w") 
g.write(str(f))  # str() converts to string 
g.close() 

执行代码时,所有我得到的是文本文件data2.txt只有下面一行:

<addinfourl at 43347592L whose fp = <socket._fileobject object at 0x000000000294C480>> 
+0

发布您的错误回溯将有助于 – 2014-09-05 10:33:21

+1

*“它不工作”*不是一个足够的问题描述。请编辑您的问题并说明您期望的结果,以及您实际得到的结果。 – 2014-09-05 10:33:52

+1

查看重复的I链接 - 您需要调用'f.read()'来实际读取响应数据。 – 2014-09-05 10:42:39

回答

0
import urllib 

    opener = urllib.FancyURLopener({}) 
    f = opener.open("http://www.python.org/") 
    lines = f.read() # you missed this 
    g = open("data2.txt", "w") 
    g.write(str(lines))  # str() converts to string 
    g.close() 
+0

是的,谢谢。这工作。 – 2014-09-05 10:53:22

2

有更好的工具这份工作,喜欢requests。例如

import requests 

url = 'http://www.python.org' 
r = requests.get(url) 

text_file = open("Output.txt", "w") 
text_file.write(r.text) 
text_file.close() 
+0

这很好。我不知道这个模块。 – 2014-09-05 11:16:49

0

您也可以使用'grab'模块。

from grab import Grab 

g = Grab() 
r = g.go('http://www.python.org') 
open('page.htm', 'w').write(r.body)