Python从0到100(三十四):Python中的urllib模块使用指南

举报
是Dream呀 发表于 2024/07/18 13:18:22 2024/07/18
【摘要】 1. urllib模块概述在Python中,除了广泛使用的requests模块之外,urllib模块也是处理HTTP请求的重要工具。urllib模块在Python 2中分为urllib和urllib2两个模块,而在Python 3中,它们被合并为一个urllib模块。本文将重点介绍Python 3中的urllib模块及其使用方法。 2. urllib模块的基本方法介绍 2.1 urllib...

在这里插入图片描述

1. urllib模块概述

在Python中,除了广泛使用的requests模块之外,urllib模块也是处理HTTP请求的重要工具。urllib模块在Python 2中分为urlliburllib2两个模块,而在Python 3中,它们被合并为一个urllib模块。本文将重点介绍Python 3中的urllib模块及其使用方法。

2. urllib模块的基本方法介绍

2.1 urllib.request.urlopen

urllib.request.urlopen方法用于发送GET请求,并获取响应。这是一个简单直接的方法,适用于获取网页内容。

import urllib.request

# 构造请求并获取响应
response = urllib.request.urlopen("http://www.baidu.com")

# 打印响应内容
print(response.read().decode('utf-8'))

2.2 urllib.request.Request

urllib.request.Request方法用于构造更复杂的请求,如自定义headers或发送POST请求。

2.2.1 构造简单请求

import urllib.request

# 构造请求对象
request = urllib.request.Request("http://www.baidu.com")

# 发送请求并获取响应
response = urllib.request.urlopen(request)

# 打印响应内容
print(response.read().decode('utf-8'))

2.2.2 传入headers参数

通过自定义headers,可以模拟浏览器行为,避免被服务器识别为爬虫。

import urllib.request

# 构造自定义headers
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}

# 构造请求对象,传入headers
request = urllib.request.Request("http://www.baidu.com", headers=headers)

# 发送请求并获取响应
response = urllib.request.urlopen(request)

# 打印响应内容
print(response.read().decode('utf-8'))

2.2.3 传入data参数

发送POST请求通常需要传递数据,urllib模块可以通过data参数实现。

import urllib.request
import urllib.parse

# 构造自定义headers
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}

# 构造请求数据字典
data = {
    "email": "mr_mao_hacker@163.com",
    "password": "alarmchime"
}

# 对请求数据字典编码为bytes类型
data = urllib.parse.urlencode(data).encode('utf-8')

# 构造请求对象,传入url、data和headers
request = urllib.request.Request('http://www.renren.com/PLogin.do', data=data, headers=headers)

# 发送请求并获取响应
resp = urllib.request.urlopen(request)

# 打印响应内容
print(resp.read().decode('utf-8'))

2.3 response.read()

response.read()方法用于获取服务器响应的内容。响应内容通常是以bytes形式存在,可以通过decode()方法转换为字符串。

import urllib.request

# 构造请求对象
request = urllib.request.Request("http://www.baidu.com")

# 发送请求并获取响应
response = urllib.request.urlopen(request)

# 打印响应内容,bytes类型
print(response.read())

# 打印响应内容,转换为str类型
print(response.read().decode('utf-8'))

3. 总结

urllib模块是Python标准库中处理HTTP请求的重要组件。通过urllib.request子模块,我们可以构造各种HTTP请求,包括GET和POST,并能够自定义headers和发送数据。掌握urllib模块的使用,对于进行网络编程和数据爬取具有重要意义。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。