探索 Python Web 开发:从框架到爬虫

server/2024/10/20 11:41:58/

Python 是 Web 开发中广泛使用的编程语言,因其简单、灵活和强大的生态系统,适合构建各种类型的 Web 应用和 API。在本篇博客中,我们将讨论 Web 开发的几个重要主题,包括 Flask 和 Django 框架、API 开发、HTTP 请求处理以及网页爬虫的基础。

9.1 Flask 框架基础

Flask 是一个轻量级的 Python Web 框架,非常适合构建小型应用或 API。由于其灵活性,Flask 提供了极简的开发体验,开发者可以自由选择各种扩展。

安装 Flask

你可以通过 pip 安装 Flask:

pip install Flask

创建一个简单的 Flask 应用

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return "Hello, Flask!"if __name__ == '__main__':app.run(debug=True)

在这个简单的应用中,我们定义了一个根路由 /,返回 “Hello, Flask!”。运行程序后,服务器将开始监听并响应 HTTP 请求。

Flask 还提供了支持模板、表单处理、数据库集成和会话管理的功能。

9.2 Django 框架基础

Django 是一个功能齐全的 Web 框架,遵循 "Django for perfectionists with deadlines" 的理念。它内置了大量功能,适合快速开发大型 Web 应用。

安装 Django

通过 pip 安装 Django:

pip install Django

创建一个 Django 项目

django-admin startproject mysite
cd mysite
python manage.py runserver

Django 会自动创建项目文件结构,包括 settings.py 文件、URL 路由文件以及应用的入口点。

创建一个简单的 Django 应用

你可以使用以下命令创建应用,并在 urls.py 中定义路由:

python manage.py startapp myapp# 在 myapp/views.py 中定义视图
from django.http import HttpResponsedef hello(request):return HttpResponse("Hello, Django!")# 在 myapp/urls.py 中定义路由
from django.urls import path
from . import viewsurlpatterns = [path('', views.hello),
]

Django 提供了 ORM(对象关系映射),模板引擎,用户认证,管理后台等功能,使其成为构建复杂 Web 应用的强大工具。

9.3 API 开发与 RESTful 架构

API(应用程序接口)允许客户端与服务器进行通信。在 Web 开发中,RESTful API 是一种常见的架构风格,它强调资源的表现和使用 HTTP 动词(如 GET、POST、PUT、DELETE)来执行操作。

Flask 中的 API 开发

可以使用 Flask 来创建 RESTful API:

from flask import Flask, jsonify, requestapp = Flask(__name__)# 模拟数据
items = [{'id': 1, 'name': 'Item 1'}, {'id': 2, 'name': 'Item 2'}]@app.route('/items', methods=['GET'])
def get_items():return jsonify(items)@app.route('/items', methods=['POST'])
def add_item():new_item = request.jsonitems.append(new_item)return jsonify(new_item), 201if __name__ == '__main__':app.run(debug=True)

Django 中的 API 开发

在 Django 中,可以使用 Django REST Framework 来开发 API:

pip install djangorestframework

然后在 views.py 中定义 API 视图,并在 urls.py 中设置路由:

from rest_framework.views import APIView
from rest_framework.response import Responseclass ItemView(APIView):def get(self, request):return Response({'message': 'GET request'})def post(self, request):data = request.datareturn Response({'message': 'POST request', 'data': data})

API 的设计应该基于资源,将每个资源(如用户、文章)设计为一个唯一的 URL,并根据 HTTP 方法执行不同操作。

9.4 使用 requests 处理 HTTP 请求

requests 是 Python 中最流行的 HTTP 库,简化了处理 HTTP 请求的工作。你可以用它发送 GET、POST、PUT、DELETE 等请求,并轻松处理响应。

安装 requests

pip install requests

使用 requests 发送 HTTP 请求

import requests# 发送 GET 请求
response = requests.get('<https://api.example.com/data>')
print(response.status_code)  # 输出响应状态码
print(response.json())  # 以 JSON 格式解析响应# 发送 POST 请求
payload = {'key': 'value'}
response = requests.post('<https://api.example.com/data>', json=payload)
print(response.status_code)
print(response.json())

requests 非常适合与 REST API 进行交互,并且提供了简洁的接口来管理会话、处理认证和异常。

9.5 网页爬虫基础 (BeautifulSoup, Scrapy)

网页爬虫是一种自动化工具,允许你从网站上提取数据。Python 提供了几个常用的爬虫工具,如 BeautifulSoup和 Scrapy

使用 BeautifulSoup 进行网页解析

BeautifulSoup 是一个用于解析 HTML 和 XML 文档的库,结合 requests 可以实现简单的网页爬虫。

pip install beautifulsoup4

示例:

import requests
from bs4 import BeautifulSoup# 获取网页内容
response = requests.get('<https://example.com>')
soup = BeautifulSoup(response.text, 'html.parser')# 查找所有链接
links = soup.find_all('a')
for link in links:print(link.get('href'))

使用 Scrapy 进行爬虫开发

Scrapy 是一个强大的爬虫框架,适合构建复杂的爬虫。

安装 Scrapy:

pip install Scrapy

使用 Scrapy,创建爬虫项目,并定义爬虫类:

scrapy startproject myproject

定义爬虫:

import scrapyclass MySpider(scrapy.Spider):name = 'myspider'start_urls = ['<https://example.com>']def parse(self, response):for link in response.css('a::attr(href)').getall():yield {'link': link}

运行爬虫:

scrapy crawl myspider

总结

Web 开发是 Python 的一大强项,不论你是想构建简单的应用,还是大型的企业系统,Python 都能提供相应的工具。从 Flask 和 Django 框架到 API 开发,再到 HTTP 请求和网页爬虫,Python 的生态系统几乎涵盖了 Web 开发的各个方面。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。


http://www.ppmy.cn/server/133326.html

相关文章

Python支持向量机(SVM)算法:面向对象的实现与案例详解

目录 Python支持向量机&#xff08;SVM&#xff09;算法&#xff1a;面向对象的实现与案例详解引言一、支持向量机算法概述1.1 支持向量机的基本思想1.2 SVM的分类问题1.3 SVM的优化目标 二、面向对象的SVM实现2.1 类的设计2.2 Python代码实现2.3 代码详解 三、案例分析3.1 案例…

计算机毕业设计Spark+大模型高考分数线预测 知识图谱高考志愿推荐系统 高考数据分析可视化 高考大数据 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 使用vuespringboot前后端分…

985研一学习日记 - 2024.10.16

一个人内耗&#xff0c;说明他活在过去&#xff1b;一个人焦虑&#xff0c;说明他活在未来。只有当一个人平静时&#xff0c;他才活在现在。 日常 1、起床6:00√ 2、健身1个多小时 今天练了二头和背部&#xff0c;明天练胸和三头 3、LeetCode刷了3题 旋转图像&#xff1a…

CollageController

目录 1、 CollageController 1.1、 保存领料主页面 1.1.1、 //审核人 1.1.2、 //审核时间 1.1.3、 //需要删除的ID集合 1.1.4、 //库存表 1.1.5、 //查询原来明细信息 1.1.6、 //修改配件表数量 1.1.7、 //修改配件表数量 1.1.8、 //查询原来明细信息 1.1…

区块链技术原理

1. 引言 区块链的定义 区块链是一种分布式账本技术&#xff08;Distributed Ledger Technology&#xff0c;DLT&#xff09;&#xff0c;其核心特征是通过密码学的方式将数据打包成一个个区块&#xff0c;按时间顺序依次相连&#xff0c;形成一个不可篡改、公开透明的链式数据…

数据结构-贪心算法笔记

前言&#xff1a;贪心无套路&#xff0c;狠狠刷就完事 分发饼干 455. 分发饼干 - 力扣&#xff08;LeetCode&#xff09; class Solution {/*** 找出最多有多少个孩子可以得到糖果。** param g 一个数组&#xff0c;表示每个孩子对糖果大小的满意度。* param s 一个数组&…

lua脚本使用cjson转换json时,空数组[]变成了空对象{}

一、前言 项目lua使用工具&#xff1a;cjson 问题&#xff1a;reids中部分数据的json key存在为[]的值&#xff0c;使用cjson进行解析的时候将原本空数组[]解析成了空对象{} 目标&#xff1a;原本[] 转 [] 二、解决方案 在使用cjson类库时&#xff0c;先配置json转换要求 -…

树莓派刷入OpenWrt后扩容overlay的方法

问题&#xff1a; 128G的SD卡刷入openwrt后发现可用空间不足100M&#xff08;我用的squashfs固件&#xff0c;ext4也存在同样的问题&#xff0c;但能否用此方法需要自己尝试一下&#xff09;。 rootOpenWrt:~# df -h Filesystem Size Used Available Use%…