怎样用Python获取网页内容?

84 投票
8 回答
208396 浏览
提问于 2025-04-15 16:40

我正在使用Python 3.1,如果这有帮助的话。

总之,我想获取这个网页的内容。我在网上查了一下,尝试了不同的方法,但都没有成功。我觉得这应该是个简单的任务,但...我就是搞不定。:/

使用urllib和urllib2的结果:

>>> import urllib2
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import urllib2
ImportError: No module named urllib2
>>> import urllib
>>> urllib.urlopen("http://www.python.org")
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    urllib.urlopen("http://www.python.org")
AttributeError: 'module' object has no attribute 'urlopen'
>>> 

Python 3的解决方案

谢谢你,Jason。:D

import urllib.request
page = urllib.request.urlopen('http://services.runescape.com/m=hiscore/ranking?table=0&category_type=0&time_filter=0&date=1519066080774&user=zezima')
print(page.read())

8 个回答

9

如果你问我的话,试试这个吧

import urllib2
resp = urllib2.urlopen('http://hiscore.runescape.com/index_lite.ws?player=zezima')

然后按照正常的方式阅读,也就是

page = resp.read()

祝你好运哦

61

如果你正在写一个从PyPI安装软件包的项目,那么最好的、最常用的库就是requests。这个库提供了很多方便又强大的功能。你可以这样使用它:

import requests
response = requests.get('http://hiscore.runescape.com/index_lite.ws?player=zezima')
print (response.status_code)
print (response.content)

但是,如果你的项目不安装自己的依赖项,也就是说只使用标准库里自带的东西,那么你应该看看其他的答案。

35

因为你在使用Python 3.1,所以你需要用新的Python 3.1接口

你可以试试:

urllib.request.urlopen('http://www.python.org/')

另外,看起来你是在参考Python 2的例子。你可以先用Python 2写代码,然后用2to3工具把它转换成Python 3。在Windows系统上,2to3.py文件在\python31\tools\scripts文件夹里。有没有人能告诉我在其他平台上怎么找到2to3.py?

编辑

现在,我写的代码可以同时在Python 2和3上运行,使用的是six这个库。

from six.moves import urllib
urllib.request.urlopen('http://www.python.org')

假设你已经安装了six,它可以在Python 2和Python 3上都能运行。

撰写回答