使用Python获取网页内容?

时间:2009-12-03 22:25:35

标签: python python-3.x

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

无论如何,我正在尝试获取this网页的内容。我用Google搜索了一下并尝试了不同的东西,但它们没有用。我猜这应该是一件容易的事,但是......我无法得到它。 :/

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解决方案

谢谢你,杰森。 :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 个答案:

答案 0 :(得分:37)

这些最好的方法是使用'requests'库:

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

答案 1 :(得分:24)

因为您使用的是Python 3.1,所以需要使用新的Python 3.1 APIs

尝试:

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

或者,看起来您正在使用Python 2示例。用Python 2编写,然后使用2to3工具进行转换。在Windows上,2to3.py位于\ python31 \ tools \ scripts中。其他人可以指出在其他平台上找到2to3.py的位置吗?

修改

现在,我使用六个来编写Python 2和3兼容代码。

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

假设您已经安装了六个,它可以在Python 2和Python 3上运行。

答案 2 :(得分:7)

如果你问我。试试这个

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

并阅读正常的方式,即

page = resp.read()

祝你好运

答案 3 :(得分:4)

如果你想处理cookie状态等,

Mechanize是一个很好的“像浏览器一样”的软件包。

http://wwwsearch.sourceforge.net/mechanize/

答案 4 :(得分:1)

您可以使用urlib2并自行解析HTML。

或者尝试美丽的汤为您做一些解析。

答案 5 :(得分:0)

与Python 2.X和Python 3.X一起使用的解决方案:

try:
    # For Python 3.0 and later
    from urllib.request import urlopen
except ImportError:
    # Fall back to Python 2's urllib2
    from urllib2 import urlopen

url = 'http://hiscore.runescape.com/index_lite.ws?player=zezima'
response = urlopen(url)
data = str(response.read())

答案 6 :(得分:0)

假设您要获取网页的内容。以下代码可以做到:

# -*- coding: utf-8 -*-
# python

# example of getting a web page

from urllib import urlopen
print urlopen("http://xahlee.info/python/python_index.html").read()

答案 7 :(得分:0)

您还可以使用faster_than_requests软件包。这非常简单快捷:

import faster_than_requests as r
content = r.get2str("http://test.com/")

看一下这个比较:

enter image description here