GET请求
GET一般用于获取/查询资源信息
GET 请求的参数会附加在 URL 后面,因此它们会在浏览器的历史记录、网络日志等地方留下痕迹。因此,GET 请求不适合用于传输敏感数据,如密码或身份验证令牌。
import requests
# 门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识为某款浏览器说明该请求是个正常的请求。
# 但是如果检测到请求的载体身份标识不是基于某款浏览器的。则表示该请求为不正常的请求(爬虫)。则服务器端就很有可能拒绝该请求
# 让爬虫对应的请求载体身份标识伪装成某一款浏览器。所以我们需要自定义user-agent头部信息,来绕过UA检测,我们把它放入一个字典中
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36'
}
# User-Agent 头告诉服务器关于发起请求的客户端的信息,如浏览器类型、操作系统、浏览器版本等。这有助于服务器返回与客户端兼容的响应内容。
# Cookie 头用于在客户端和服务器之间传递会话信息。这对于保持用户登录状态、购物车内容等会话信息至关重要。
url = 'https://www.baidu.com/s'
content = input('请输入您想查询的词:')
# url=f'https://www.baidu.com/s?wd={content}&pn=0' #格式化输出拼接
# 当发送请求时,requests库会将这个参数编码成查询字符串,并附加到URL的末尾
param = {
'wd': content,
'pn': 0
}
response = requests.get(url=url, params=param, headers=headers) # 三个参数
print('response url:',response.url)
print(response.headers.get('Set-Cookie'))
ctx = response.text
print(ctx)
with open('1.html', 'w', encoding='utf-8') as df:
df.write(ctx)
print('保存成功')
POST请求
通常用于向服务器提交数据,如提交表单数据、上传文件等。POST 请求的数据不会附加在 URL 后面,而是作为请求体的一部分发送。
import requests
import base64
with open('./test.png','rb') as f :
h=f.read()
base64_string = base64.b64encode(h).decode('utf-8')
print('png',h)
url = 'http://httpbin.org/post' # 上传文件接口
files = {
'file': ('test.png', # 文件名称
open('./test.png', 'rb'), # 文件路径
'image/png', # 文件类型
{'Expires': '0'} # 其他参数,非必传
)
} # => 打开上传文件并且加入文件相关参数
data = {
"name": "test" }
# data传入请求参数dict,files传入待上传文件参数dict r = requests.post(url, data=data, files=files)
r = requests.post(url, data=data, files=files)
print(r.json())
# 登录网站的基本步骤如下:
#
# 发送GET请求获取登录页面内容:使用requests模块的get方法发送一个GET请求,获取登录页面的HTML内容。
# 解析HTML内容,获取登录所需的参数:使用Python的HTML解析库(如Beautiful Soup)来解析HTML内容,获取登录表单的参数。
# 构造POST请求,提交登录数据:构造一个POST请求,以提交登录所需的数据,并将登录所需的参数作为请求的参数传递给服务器。
# 发送POST请求完成登录:使用requests模块的post方法发送一个POST请求,在请求中携带登录所需的参数,完成登录。
# 验证登录是否成功:发送登录请求后,可以通过判断返回的页面内容或Cookie中的登录状态来验证登录是否成功。
import requests
from bs4 import BeautifulSoup
# 构造登录所需的数据
your_name=input('输入登录名')
pass_word=input('输入密码')
login_data = {
'login': your_name,
'password': pass_word
}
# 发送GET请求,获取登录页面的HTML内容
login_page = requests.get('https://github.com/login')
soup = BeautifulSoup(login_page.content, 'html.parser')
# 解析HTML内容,获取登录所需的参数
authenticity_token = soup.select_one('input[name="authenticity_token"]')['value']
# 将登录所需的参数添加到登录数据中
login_data['authenticity_token'] = authenticity_token
# 发送POST请求,完成登录
response = requests.post('https://github.com/session', data=login_data)
# 验证登录是否成功
if response.status_code == 200:
print('登录成功!')
else:
print('登录失败!')