用Python模拟一个网络请求

本文详细介绍了如何在Python中使用requests、urllib和urllib3这三个库进行网络请求,包括安装Python和PyCharm,以及如何执行get和post请求。
摘要由CSDN通过智能技术生成

本篇我们分享使用python模拟一个网络请求

一、安装python

  1. 首先,你需要安装Python环境。访问Python官方网站(https://www.python.org/downloads/)并下载最新版本的Python安装程序。根据你的操作系统选择合适的安装程序(通常选择Windows平台下的.exe文件)。

  2. 运行Python安装程序,按照安装向导的指示进行安装。在安装过程中,确保勾选上"Add Python to PATH"选项,这样就可以在命令行中直接使用Python命令了。

  3. 安装完成后,打开命令行窗口(Windows用户可以通过在开始菜单中搜索"命令提示符"或"PowerShell"打开),输入"python"命令,查看是否成功安装Python环境。如果输出Python的版本号,则说明安装成功。

二、安装pycharm

  1. 访问JetBrains的官方网站:https://www.jetbrains.com/pycharm/,并下载适用于您操作系统的版本。
  2. 打开下载的安装程序,并按照安装向导的指示进行操作。在Windows上,您只需双击安装程序即可。在Mac上,您需要将安装程序拖放到“应用程序”文件夹中。
  3. 安装完成后,打开PyCharm。
  4. 在初始设置向导中,根据提示配置UI、快捷键、安装需要的插件等。
  5. 在最后一步中,选择“创建新的项目”,然后选择项目类型和位置。然后,单击“创建”。
  6. PyCharm将加载项目并打开编辑器界面。

三、python中可用于发送网络请求的模块

3.1 requests

requests是一个三方模块,需要pip安装

pip install requests

3.1.1 get请求

import requests

url = 'https://www.baidu.com'

# method: 请求方法 get post
# url: 请求网址
# 根据情况添加可选参数:
#   params(查询参数),headers(请求头),cookies(用户身份信息),proxies(代理),    
#   verify(是否验证证书),timeout(响应超时时间),allow_redirects(是否允许重定向),
#   auth(权限认证),stream(是否是数据流传输),files(文件),json(提交参数),
#   data(post请求提交参数)

response = requests.get(url=url)

# 响应的数据可分为文本数据和二进制数据,如图片、视频、音频为二进制数据
# 打印文本信息
print(response.text)
# 打印二进制数据
print(response.content)

3.1.2 post请求

import requests
url = ''https://www.baidu.com''
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}
data = {
    'token': '',
    'domain': ''
}


cookies = {'',}

response = requests.post(url=url, headers=headers, data=data, cookies=cookies)
print(response.json())

2. urllib

urllib作为Python的标准库,不需要安装。

3.2.1 get请求

from urllib import request
from urllib.request import Request

url = 'https://www.baidu.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}

urls = Request(url=url,headers=headers)
# 使用urlopen()方法来发起请求:
response = request.urlopen(urls)

# 使用read()方法获取访问网页获得的数据。获得的数据是bytes的二进制格式,需要decode转成字符串格式。
print(response.read().decode('utf-8'))

3.2.2 post请求

import urllib.parse
from urllib import request
from urllib.request import Request


url = 'https://fanyi.baidu.com/v2transapi?from=zh&to=en'
headers = {
    'Host': 'fanyi.baidu.com',
    'Origin': 'https://fanyi.baidu.com',
    'Referer': 'https://fanyi.baidu.com/?aldtype=16047',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}
datas = {
    'from': 'zh',
    'to': 'en',
    'query': '明天',
    'transtype': '',
    'simple_means_flag': '',
    'sign': '',
    'token': '',
    'domain': ''
}
urls = Request(url=url,headers=headers)
# data是bytes类型
data = bytes(urllib.parse.urlencode(datas), encoding='utf8')
# urlopen()方法中携带data参数发送post请求
response = urllib.request.urlopen(urls, data=data)
print(response.read().decode('utf-8'))

3. urllib3

urllib3 库是第三方标准库,需要pip安装

pip install urllib3

3.3.1 get请求

import urllib3

req = urllib3.PoolManager()
url = 'http://www.baidu.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
response = req.request('GET', url, headers=headers)
result = response.data.decode('UTF-8')
print(result)

3.3.2 post请求

import urllib3

url = 'https://fanyi.baidu.com/v2transapi?from=zh&to=en'
headers = {
    'Acs-Token': '',
    'Host': 'fanyi.baidu.com',
    'Origin': 'https://fanyi.baidu.com',
    'Referer': 'https://fanyi.baidu.com/?aldtype=16047',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}
params = {
    'from': 'zh',
    'to': 'en',
    'query': '明天',
    'transtype': 'realtime',
    'simple_means_flag': '3',
    'sign': '',
    'token': '',
    'domain': '',
}
http = urllib3.PoolManager()
res = http.request('POST', url, headers = headers, fields = params)
result = res.data.decode('UTF-8')
print(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值