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

ops/2024/10/23 16:11:37/

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/ops/127860.html

相关文章

宇宙汽车展览如何以创新性、个性化与便捷性,重塑汽车展示生态

一、汽车展示的创新性 元宇宙汽车展览通过运用虚拟现实以及3D建模等前沿技术&#xff0c;为观众呈现出一个高度沉浸式的汽车展示环境。在这里&#xff0c;汽车不再仅仅是静态的展品&#xff0c;而是成为了一个个生动、可交互的虚拟对象。观众可以自由地环绕汽车&#xff0c;全…

C++之《剑指offer》学习记录(2):sizeof

笔者最近在找工作时&#xff0c;无意间读到了一本名为《剑指offer》的书&#xff0c;粗略翻阅了一下&#xff0c;感觉这将会是一本能让我不再苦恼于笔试和面试“手搓代码”的书。故笔者写下该系列博客记录自己的学习历程&#xff0c;希望能和这本书的读者朋友们一起交流学习心得…

通过滑动控制 图片3d(多张视频序列帧图片) 展示

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>控制图片变化</title> <style>img {…

Python基础:20、Python基础综合案例

数据可视化 - 折线图可视化 数据可视化 - 地图 数据可视化 - 动态柱状图 1.json数据格式 JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据 JSON本质上是一个带有特定格式的字符串 主要功能&#xff1a;json就是一种在各个编程语言中流通的数据格…

时空数据时序预测模型: HA、VAR、GBRT、GCN、DCRNN、FCCF、ST-MGCN

HA (Historical Average) HA (Historical Average&#xff0c;历史平均模型) 是一种基础的时间序列预测方法&#xff0c;通常用于预测具有周期性或季节性规律的数据。它通过计算历史上同一时间段的平均值来预测未来值&#xff0c;假设数据会遵循某种周期性的变化模式。以下是对…

【ARM】MDK-Flex服务管理软件使用说明

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录MDK网络版部署工具Imtools.exe 的各个界面中相关配置的功能说明 2、 问题场景 解决客户咨询&#xff0c;该服务管理软件如何使用&#xff0c;为客户使用服务管理软件后期自行维护增加一定指导作用。 3、软硬件环…

Ajax处理错误信息(处理响应报文)

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title></head><body><form action""><div>用户名<input type"text" class"username"></div>…

人工智能:塑造未来生活与工作的力量

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 引言 随着人工智能技术的不断发展&#xff0c;我们已经看到了它在各行业带来的巨大变革。 在医疗行业中…