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

embedded/2024/10/20 12:55:01/

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/embedded/128995.html

相关文章

Qt贪吃蛇-游戏逻辑设计(4)

目录 游戏房间 实现游戏开始和游戏暂停 设置移动按钮 退出游戏 绘制分数 绘制游戏失败效果 控制蛇的移动速度 添加吃食物的音效 选择大厅 历史记录绑定信号槽 往文件中写入分数 承接上文 游戏房间 实现游戏开始和游戏暂停 setLoops 参数是循环的次数&#xff0c…

如何快速学会盲打

今天就来给大家分享一下如何快速学会盲打 盲打的基本方法和步骤 手指放置&#xff1a;将双手放在键盘上&#xff0c;左手食指放在F键上&#xff0c;右手食指放在J键上&#xff0c;其他手指分别放在相邻的键位上。熟悉键盘布局&#xff1a;学习26个字母的位置&#xff0c;以及…

Docker报错-Docker Desktop - Unexpected WSL error

使用超级管理员Shell键入命令 netsh winsock reset 重启后即可。

Qt 每日面试题 -9

81、请写一个调用消息对话框提示报错的程序 QMessageBox::waring(this,tr("警告"), tr("用户名或密码错误!"),QMessageBox::Yes)82、Qt都提供哪些标准对话框以供使用&#xff0c;他们实现什么功能? Qt提供9个标准对话框: QColorDialog 颜色对话框&…

C++20中头文件span的使用

<span>是C20中新增加的头文件&#xff0c;此头文件是containers库的一部分。包括&#xff1a; 1.模板类std::span&#xff1a;连续对象序列的非拥有视图(view)。std::span可以具有static extent&#xff0c;在这种情况下&#xff0c;序列中的元素数量在编译时已知并以typ…

计算机网络自顶向下(3)---TCPsocket

1.TCPsocket TCPsocket是指使用传输控制协议&#xff08;TCP&#xff09;的网络套接字。套接字是网络中两台计算机之间进行通信的端点。TCP是一种可靠的、面向连接的协议&#xff0c;提供了错误检测、流量控制和拥塞控制等功能。 TCPsocket通常用于客户端-服务器通信&#xff0…

【Flutter】基础入门:代码基本结构

通过这个简单的 Flutter 示例程序&#xff0c;我们可以快速了解 Flutter 的代码结构&#xff0c;理解每个部分的作用。 import package:flutter/material.dart; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}…

中间件详解与应用场景

1. 引言 随着信息技术的飞速发展&#xff0c;应用系统变得日益复杂&#xff0c;软件架构逐步从单体应用演变为分布式系统。在这种复杂的环境中&#xff0c;如何使各个系统、服务和组件之间顺畅地通信、协作&#xff0c;成为了软件开发中的关键问题。中间件&#xff08;Middlew…