Python使用urllib.open时出现错误

25

当我运行这段代码时:

import urllib

feed = urllib.urlopen("http://www.yahoo.com")

print feed
我在交互式窗口(PythonWin)中得到了这个输出:
<addinfourl at 48213968 whose fp = <socket._fileobject object at 0x02E14070>>

我希望能够获取上述URL的源代码。我知道在其他电脑上(比如学校的电脑)可以成功实现,但是在我的笔记本电脑上却无法实现,我不知道问题出在哪里。此外,我完全不理解这个错误是什么意思。Addinfourl?fp?请帮忙。


https://pythonhosted.org/ndg-saml/urllib.addinfourl-class.html - noobninja
3个回答

55

试试这个:

print feed.read()

查看Python文档此处


谢谢!这非常有帮助!我离完成这个程序又近了一步!文档链接也非常有用!关于错误有什么想法吗?只是好奇……试图了解这些事情。 - Alan
2
addinfourl不是错误,它是一个对象。你没有做错任何事情。只需用"print feed.read()"替换"print feed",你就可以得到你的HTML了。 - RexE
好的,谢谢。我会再仔细研究一下。只是不太明白为什么会出现这种情况。再次感谢! - Alan
好的,这很有道理。感谢您抽出时间。这是一个更大项目的第一步,该项目旨在从TourFilter Dallas(特别是http://www.tourfilter.com/dallas/rss/by_concert_date)获取数据,解析乐队信息,并将该乐队的活动地点地理编码到ArcGIS地图上。感谢您的帮助! - Alan
请查看http://wwwsearch.sourceforge.net/mechanize/,http://wiki.python.org/moin/RssLibraries和http://www.crummy.com/software/BeautifulSoup/以帮助解析。 - RexE
显示剩余2条评论

17

urllib.urlopen实际上返回一个类似文件的对象,因此要检索内容,您需要使用:

import urllib

feed = urllib.urlopen("http://www.yahoo.com")

print feed.read()

谢谢!那太有帮助了!我离完成这个程序又近了一步! - Alan

7

在Python 3.0中:

import urllib
import urllib.request

fh = urllib.request.urlopen(url)
html = fh.read().decode("iso-8859-1")
fh.close()

print (html)

谢谢,decode("iso-8859-1")是关键步骤,解决了我看到的“Type str doesn't support the buffer API”错误! - JAL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接