2.x版本的python可以直接使用import urllib来进行操作,但是3.x版本的python使用的是import urllib.request来进行操作,下面是简单的例子:
===============================================================================
# get code of given URL as html text string
# Python3 uses urllib.request.urlopen()
# instead of Python2's urllib.urlopen() or urllib2.urlopen()
import urllib.request
fp = urllib.request.urlopen("http://www.python.org")
mybytes = fp.read()
# note that Python3 does not read the html code as string
# but as html code bytearray, convert to string with
mystr = mybytes.decode("utf8")
fp.close()
print(mystr)
================================================================================
# get the code of a given URL as html text string
# Python3 uses urllib.request.urlopen()
# get the encoding used first
# tested with Python 3.1 with the Editra IDE
import urllib.request
def extract(text, sub1, sub2):
"""
extract a substring from text between first
occurances of substrings sub1 and sub2
"""
return text.split(sub1, 1)[-1].split(sub2, 1)[0]
fp = urllib.request.urlopen("http://www.python.org")
mybytes = fp.read()
encoding = extract(str(mybytes).lower(), 'charset=', '"')
print('-'*50)
print( "Encoding type = %s" % encoding )
print('-'*50)
if encoding:
# note that Python3 does not read the html code as string
# but as html code bytearray, convert to string with
mystr = mybytes.decode(encoding)
print(mystr)
else:
print("Encoding type not found!")
fp.close()
==================================================================================
相关推荐
了解了这些变化后,我们可以更深入地探讨Python 3.X中urllib库的使用方法: **发送请求**: 使用urllib.request模块的urlopen()函数发送HTTP请求。例如: ```python import urllib.request r = urllib.request....
在Python 2.x中,这部分功能由`urllib2`模块提供,而在Python 3.x中,被整合到`urllib.request`模块。其中,`urlopen()`函数是最常用的方法,用于发送HTTP请求。在Python 3.x中,调用方式为: ```python import ...
### Python urllib2 模块详解 ...尽管 `urllib2` 在 Python 3.x 中已被拆分为 `urllib.request` 和 `urllib.error` 等多个模块,但其核心思想和用法仍然一致。希望本文能够帮助读者更好地理解和使用 `urllib2`。
需要注意的是,在Python 3.x中,`urllib2`的功能已被合并到`urllib.request`模块中,因此在编写新代码时推荐使用`urllib.request`。 在实际应用中,除了GET和POST之外,还有许多其他类型的HTTP请求(如PUT、DELETE...
3rd Edition更新了对Python 3.x的支持,涵盖了新版本的重要特性。 3. **Core Python Programming**: 《Core Python Programming》由Wesley Chun编写,同样适合初学者,也适合有一定经验的开发者作为参考。本书...
总结,Python的`urllib2`模块提供了方便的接口来发送HTTP POST请求,但为了兼容性和安全性,建议在Python 3.x中使用`urllib.request`模块,以及考虑使用更高级的库,如`requests`,它提供了更友好的API和更好的错误...
urllib2库是Python 2.x中的标准库,在Python 3.x中,它已经被划分到了几个不同的模块中,比如urllib.request替代了urllib2,urllib.error和urllib.parse等,但基本的使用方式类似,可以采用类似的代码逻辑。...
- **Python的发展历程**:自1991年发布以来,Python不断更新和完善,当前最新的稳定版本是Python 3.x系列。 - **为何选择Python**:Python语法简洁明了,易于阅读和理解,同时拥有庞大的社区支持和丰富的第三方库...
x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } request = urllib.request.Request('http://example.com', headers=headers) response = urllib.request.urlopen(request) ...
### 廖雪峰Python教程3.x版知识点概览 #### Python教程介绍 - **教程特色**:本教程为中文版、免费、面向零基础学习者,并提供了完整的示例代码,基于最新的Python 3版本。 - **Python简介**:Python是一种广泛使用...
当使用Python进行网络爬虫时,可以使用`urllib2`(在Python 3中被`urllib.request`取代)模块来设置这个头信息。下面我们将详细介绍如何使用`urllib2`设置自定义`User-Agent`来抓取网页。 首先,导入`urllib2`模块...
1. **语法变化**:Python 3 引入了许多语法上的改进,如 print 函数化,不再使用 `print x`,而是使用 `print(x)`;除法操作符 `/` 总是返回浮点数,若要进行整数除法需使用 `//`。 2. **Unicode 支持**:Python 3 ...
lambda函数是Python中的匿名函数,它允许简洁地定义一次性使用的简单函数。lambda函数由`lambda`关键字开始,后面跟着参数,然后是冒号,最后是表达式,表达式的结果即为函数的返回值。例如,`lambda x, y: x + y`...
虽然Python 3已经广泛使用,但Python 2.x版本在某些场景下仍有应用。Python 2.6提供了许多核心的编程概念,如变量、数据类型、控制结构(如if语句和for循环)、函数以及类。此外,它也支持模块化编程,这在编写大型...
在Python编程中,`six.moves`模块是一个非常重要的工具,它提供了一种向后兼容...在Python 3.x中,可以直接使用`urllib.request.urlretrieve`,但在向后兼容2.x版本时,应使用`six.moves.urllib.request.urlretrieve`。
需要注意的是,这里的 `urllib.urlopen` 在 Python 3 中已经被移到了 `urllib.request.urlopen`,因此如果使用 Python 3,需要相应地更新代码。 当有网址无法打开时,如返回 404 错误,测试会报错,如下所示: ```...
书中的第四版会涵盖Python 3.x的语法更新,如`print`变为函数,以及`range()`函数的变化。 2. **数据结构**:Python提供了丰富的内置数据结构,包括列表、元组、字典和集合。列表是动态大小的有序集合,支持切片、...
- `assertIsNotNone(x)`:检查x是否不是None(Python 2.7及以上版本)。 - `assertIn(a, b)`:检查a是否在b中(Python 2.7及以上版本)。 - `assertNotIn(a, b)`:检查a是否不在b中(Python 2.7及以上版本)。 - `...