使用Python+requests简单实现模拟登录以及抓取接口数据

简介: 本文通过Python的requests库演示了如何实现模拟登录和抓取接口数据的过程,包括设置请求头、发送POST请求进行登录以及使用登录后的会话进行GET请求获取数据。

前言

说起爬虫这个东西,大学时我习惯用PHP+CURL来实现,后来用Java+WebMagic来实现。如今刚接触一下Python,开始了解一下Python的语法和框架等,以及用Python来做一些HTTP请求,发现在功能实现上,相比PHP和Java,其更加方便、简洁、高效。

本例子的服务端是基于Session来和客户端保持会话连接的,也就是说每个客户端首次访问服务端时,服务端都会为其开启一个Session,只要客户端的Cookie信息不被用户清空,或者服务端重启,又或者此Session保持长时间有效,之后的访问,多少次都是同一个Session,并存于服务器内存中。

下面就以Python的requests依赖库来实现一个客户端模拟登录。

一、运行环境

Python => 3.11.2
urllib3 => 1.26.15

二、示例代码

(1)index.py

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import requests
import json
import urllib3

urllib3.disable_warnings()  # InsecureRequestWarning: Unverified HTTPS request is being made to host 'xxx'. Adding certificate verification is strongly advised.

# 实例化 session 对象
session = requests.session()

# 打印前后的请求标头
headers = {
   
    "Content-Type": 'application/json',
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36"
}
print('原 session 的请求标头' + str(session.headers))
session.headers = headers
print('新 session 的请求标头' + str(session.headers))

# 更新为使用账号密码登录成功的 session 对象
url = 'https://xxx.com/api/login'  # 登录接口
data = {
   
    'username': '',
    'password': ''
}
response = session.post(url, data=json.dumps(data), headers=headers, verify=False)

if response.status_code == 200:
    print('尊敬的用户,' + '您已模拟登录 成功~')
    print(response.text)
    print(response.cookies)
else:
    print('模拟登录 失败!')
print('\n')

# 爬取 getUserList 接口数据
userListUrl = 'https://xxx.com/api/getUserList'  # 目标接口
response = session.get(userListUrl, headers=headers, cookies={
   }, verify=False)

if response.status_code == 200:
    print('爬取接口 成功~')
    print(response.text)
else:
    print('爬取接口 失败!')

三、运行效果

D:\Python3.11\python.exe D:\workspace\python3_django4_web\python3_django4_web\simulated_client\index.py 

原 session 的请求标头{
   'User-Agent': 'python-requests/2.28.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
新 session 的请求标头{
   'Content-Type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36'}

尊敬的XXX用户,您已模拟登录 成功~
{
   "success":true,"statusCode":200,"data":"..."}
<RequestsCookieJar[...]>


爬取接口 成功~
{
   "success":true,"statusCode":200,"data": [...]}

Process finished with exit code 0

四、参考资料

JSESSIONID的简单说明_hzm326的博客-CSDN博客

目录
相关文章
|
9月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
9月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
7752 1
|
9月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
738 0
|
9月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
9月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
10月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
10月前
|
存储 JSON 算法
Python集合:高效处理无序唯一数据的利器
Python集合是一种高效的数据结构,具备自动去重、快速成员检测和无序性等特点,适用于数据去重、集合运算和性能优化等场景。本文通过实例详解其用法与技巧。
285 0
|
10月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
10月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
10月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。

推荐镜像

更多