Python自带爬虫库urllib使用大全

本文讲解了urllib库在Python中的应用,包括发送HTTP请求、响应处理、URL解析以及代理设置,适合Web开发者深入学习。
摘要由CSDN通过智能技术生成

目录

一、urllib库简介

二、发送HTTP请求

三、处理响应

四、解析URLs

五、设置代理

六、总结


在Python中,urllib是一个用于处理URLs的内置库,它提供了用于构建、解析、发送和接收HTTP、HTTPS和其他URLs的强大工具。这个库是Python标准库的一部分,因此不需要额外安装任何依赖项。本文将介绍urllib库的常用功能和用法,包括如何使用urllib发送HTTP请求、处理响应、解析URLs等。

一、urllib库简介

urllib库包含多个模块,其中最常用的是urllib.request和urllib.parse。

urllib.request模块提供了一个高级的HTTP客户端接口,可以用于发送各种类型的HTTP请求(GET、POST、PUT、DELETE等)。
urllib.parse模块提供了用于解析URLs的工具,可以将URLs分解为各个组成部分,并可以构建新的URLs。

二、发送HTTP请求

要使用urllib发送HTTP请求,需要先导入urllib.request模块,并使用其中的Request类创建一个请求对象。然后,可以使用urlopen()函数发送请求并获取响应。

下面是一个简单的示例,演示如何使用urllib发送GET请求:

import urllib.request  
  
# 创建请求对象  
req = urllib.request.Request('http://example.com')  
  
# 发送请求并获取响应  
response = urllib.request.urlopen(req)  
  
# 打印响应内容  
print(response.read())
如果要发送POST请求,可以在创建请求对象时添加额外的参数。下面是一个示例:

python
import urllib.request  
import urllib.parse  
  
# 创建请求对象  
data = urllib.parse.urlencode({'key1': 'value1', 'key2': 'value2'})  
req = urllib.request.Request('http://example.com/post', data)  
  
# 发送请求并获取响应  
response = urllib.request.urlopen(req)  
  
# 打印响应内容  
print(response.read())

在上面的示例中,我们使用了urlencode()函数将字典转换为URL编码的字符串,并将其作为请求体发送。然后,我们指定了请求方法为POST。注意,我们还需要指定请求头中的Content-Type为application/x-www-form-urlencoded,以告知服务器我们发送的是表单数据。

三、处理响应

在发送请求后,我们可以使用Response对象来获取响应的状态码、头部信息等。下面是一个示例:

import urllib.request  
  
# 创建请求对象  
req = urllib.request.Request('http://example.com')  
  
# 发送请求并获取响应  
response = urllib.request.urlopen(req)  
  
# 获取响应状态码和头部信息  
status = response.status  # HTTP状态码(200, 404等)  
headers = response.getheaders()  # 返回一个包含所有头部信息的列表(元组对)

四、解析URLs

urllib.parse模块提供了用于解析URLs的工具,可以将URLs分解为各个组成部分,并可以构建新的URLs。下面是一个示例,演示如何使用urllib.parse模块解析URLs:

import urllib.parse  
  
# 创建一个URL字符串  
url = 'http://example.com/path/to/file?query=string#fragment'  
  
# 使用urlparse()函数解析URL  
parsed_url = urllib.parse.urlparse(url)  
  
# 打印解析后的URL组成部分  
print(parsed_url)
输出:

python
ParseResult(scheme='http', netloc='example.com', path='/path/to/file', params='', query='query=string', fragment='fragment')

在上面的示例中,我们使用了urlparse()函数来解析URL,该函数返回一个ParseResult对象,包含了URL的各个组成部分。可以使用该对象的属性来访问各个部分,例如scheme表示URL的协议,netloc表示主机名和端口号,path表示URL路径等。

除了urlparse()函数外,urllib.parse模块还提供了其他一些有用的函数,例如quote()函数用于对字符串进行URL编码,unquote()函数用于对URL编码的字符串进行解码等。下面是一个示例:

import urllib.parse  
  
# 创建一个需要进行URL编码的字符串  
str = 'Hello, world!'  
  
# 使用quote()函数进行URL编码  
encoded_str = urllib.parse.quote(str)  
print(encoded_str)  # 输出:Hello%2C+world%21

五、设置代理

如果你需要使用代理服务器来发送HTTP请求,可以使用urllib.request模块中的ProxyHandler类来设置代理。下面是一个示例:

import urllib.request  
  
# 设置代理服务器地址和端口号  
proxy_handler = urllib.request.ProxyHandler({'http': 'http://proxy.example.com:8080'})  
  
# 创建自定义的OpenerDirector,将代理处理器添加到其中  
opener = urllib.request.build_opener(proxy_handler)  
  
# 创建一个Request对象,指定目标URL  
req = urllib.request.Request('https://www.zdaye.com')  
  
# 使用自定义的OpenerDirector发送请求并获取响应  
response = opener.open(req)  
  
# 打印响应内容  
print(response.read())

在上面的示例中,我们首先创建了一个ProxyHandler对象,并指定了代理服务器的地址和端口号。然后,我们创建了一个自定义的OpenerDirector对象,将代理处理器添加到其中。最后,我们使用自定义的OpenerDirector对象来发送请求并获取响应。通过这种方式,所有的HTTP请求都会经过指定的代理服务器进行转发。

六、总结

urllib库是Python中用于处理URLs的内置库,提供了发送HTTP请求、处理响应、解析URLs等功能。通过使用urllib库,你可以轻松地构建和发送HTTP请求,获取和处理响应,以及解析和构建URLs。希望通过本文的介绍,你对urllib库的使用有了更深入的了解。如果你还有其他问题或需要更多帮助,请随时向我提问。

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻啦嘿哟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值