跳到主要内容
Python Web 开发基础:爬虫、框架与接口服务实战 | 极客日志
Python
Python Web 开发基础:爬虫、框架与接口服务实战 综述由AI生成 涵盖 Python Web 开发核心内容,包括网页数据抓取(正则、HTML 解析、BeautifulSoup)、动态交互实现(CGI、Flask 等框架)以及程序间通信(XML-RPC、RESTful API)。此外还介绍了工业级爬虫 Scrapy、高性能 API 框架 FastAPI 及浏览器自动化工具 Selenium。旨在帮助开发者掌握从数据采集到服务构建的完整技术栈。
狂少 发布于 2026/2/19 更新于 2026/5/17 12 浏览一、屏幕抓取:Web 数据的'搬运工'
想象一下,你是个勤劳的'数据搬运工',每天的工作就是从浩瀚的互联网海洋里,把那些散落在网页上的'金子'(数据)捞出来,然后整理好,变成自己能用的'宝藏'。这就是屏幕抓取(Web Scraping) ,也叫网络爬虫,它的核心任务就是:程序化地下载网页内容,并从中提取你想要的信息 。是不是听起来有点像在数字洪流中捕捉关键信息?
1. 正则表达式:快准狠的'文本手术刀'
在 Python 的世界里,**正则表达式(Regular Expression,简称 Regex)**就像一把锋利的'手术刀',能让你在杂乱无章的文本中,精准地切割、匹配、提取出你想要的部分。当网页内容还是一堆'乱码'时,Regex 就是你的'火眼金睛'。
专业解释 :正则表达式是一种用于匹配字符串模式的强大工具。它通过定义一系列特殊字符和语法规则,来描述字符串的搜索模式,从而实现对文本的查找、替换、提取等操作。在屏幕抓取中,我们常用它来从原始 HTML 文本中匹配特定的数据。
大白话解读 :比如你想从一堆电话号码里找出所有以'138'开头的,或者从一篇文章里找出所有链接,正则表达式就能帮你一秒搞定,比你一个一个找快多了!
示例 Python 代码 :
import re
import urllib.request
def simple_regex_scraper (url ):
try :
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
req = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req) as response:
html_content = response.read().decode('utf-8' )
pattern = re.compile (r'<a href="(/jobs/\d+)/?">(.*?)</a>' )
job_listings = pattern.findall(html_content)
print (f"从 {url} 抓取到的职位信息:" )
for job_url_suffix, job_name job_listings:
full_job_url =
( )
Exception e:
( )
in
f"https://www.python.org{job_url_suffix} "
print
f"- {job_name} ({full_job_url} )"
except
as
print
f"抓取失败:{e} "
小提示 :正则表达式虽然强大,但面对复杂的 HTML 结构,比如嵌套很深的标签,或者 HTML 本身就不规范时,它可能会让你抓狂。这时候,我们就需要更'温柔'的工具了!
2. HTML 解析:优雅地'拆解'网页
当网页内容不再是简单的文本,而是结构复杂的 HTML 时,我们就需要一个'结构工程师'来帮助我们理解和拆解它。HTML 解析 就是把一堆 HTML 代码,变成一个有层级、有关系的'积木模型',这样我们就能轻松找到想要的'积木'了。
专业解释 :HTML 解析是将 HTML 文档(通常是字符串形式)转换为一个可操作的数据结构(如 DOM 树),以便程序能够方便地访问、修改和提取文档中的元素、属性和文本内容。这比直接使用正则表达式匹配原始字符串更健壮和灵活。
大白话解读 :就像你拿到一份乐高说明书,HTML 解析就是帮你把说明书上的零件(标签)和组装步骤(结构)理清楚,让你知道哪个零件在哪,怎么拼起来。
示例 Python 代码(使用 html.parser) :
from urllib.request import urlopen
from html.parser import HTMLParser
class JobScraper (HTMLParser ):
def __init__ (self ):
super ().__init__()
self .in_job_link = False
self .current_job_name = []
self .job_listings = []
def handle_starttag (self, tag, attrs ):
if tag == 'a' :
attrs_dict = dict (attrs)
href = attrs_dict.get('href' )
if href and '/jobs/' in href and href.split('/' )[-1 ].isdigit():
self .in_job_link = True
self .current_job_url = f"https://www.python.org{href} "
self .current_job_name = []
def handle_data (self, data ):
if self .in_job_link:
self .current_job_name.append(data.strip())
def handle_endtag (self, tag ):
if tag == 'a' and self .in_job_link:
job_name = '' .join(self .current_job_name).strip()
if job_name:
self .job_listings.append(f"{job_name} ({self.current_job_url} )" )
self .in_job_link = False
def html_parser_scraper (url ):
try :
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
req = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req) as response:
html_content = response.read().decode('utf-8' )
parser = JobScraper()
parser.feed(html_content)
parser.close()
print (f"\n使用 HTMLParser 从 {url} 抓取到的职位信息:" )
for job in parser.job_listings:
print (f"- {job} " )
except Exception as e:
print (f"抓取失败:{e} " )
温馨提示 :HTMLParser 是 Python 标准库自带的,用起来比较底层,需要自己处理各种标签事件。如果你觉得这有点像'手搓'螺丝,那么接下来要介绍的'电动工具'一定会让你爱不释手!
3. Beautiful Soup:应对'脏乱差'网页的'神器'
互联网上的网页可不是都那么'规矩'的,很多时候它们就像一堆被熊孩子玩过的乐高积木,缺胳膊少腿,乱七八糟。这时候,Beautiful Soup 就闪亮登场了!它是一个专门用来'收拾烂摊子'的工具,即使面对格式再糟糕的 HTML,它也能帮你优雅地解析出来。
专业解释 :Beautiful Soup 是一个 Python 库,用于从 HTML 或 XML 文件中提取数据。它能够处理不规范的 HTML 标记,并提供简单、Pythonic 的方式来导航、搜索和修改解析树。它构建了一个解析树,使得开发者可以通过标签名、属性、CSS 选择器等多种方式轻松定位元素。
大白话解读 :Beautiful Soup 就像一个'超级保姆',不管你的 HTML 代码有多'熊',它都能帮你整理得服服帖帖,让你想找什么数据,就像在自己家里找东西一样简单。
from urllib.request import urlopen
from bs4 import BeautifulSoup
def beautiful_soup_scraper (url ):
try :
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
req = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req) as response:
html_content = response.read()
soup = BeautifulSoup(html_content, 'html.parser' )
job_listings = set ()
for listing in soup.find_all('div' , class_='listing-row' ):
link_tag = listing.find('h2' ).find('a' )
if link_tag:
job_name = link_tag.get_text(strip=True )
job_url_suffix = link_tag.get('href' )
full_job_url = f"https://www.python.org{job_url_suffix} "
job_listings.add(f"{job_name} ({full_job_url} )" )
print (f"\n使用 Beautiful Soup 从 {url} 抓取到的职位信息:" )
for job in sorted (list (job_listings), key=str .lower):
print (f"- {job} " )
except Exception as e:
print (f"抓取失败:{e} " )
总结一下 :屏幕抓取就像是互联网世界的'寻宝游戏'。正则表达式是你的'藏宝图碎片',帮你识别特定模式;HTMLParser 是你的'放大镜',帮你细致地查看 HTML 结构;而 Beautiful Soup 则是你的'万能工具箱',不管遇到多复杂的'宝藏箱',它都能帮你打开!
二、CGI:让你的网页'动'起来
如果说屏幕抓取是把别人的网页'搬'回家,那 CGI(Common Gateway Interface,通用网关接口) 就是让你自己家的网页'活'起来的魔法!静态网页就像一张张精美的海报,虽然好看,但不会对你的任何行为做出反应。而有了 CGI,你的网页就变成了一个能和你互动的'智能机器人'!
1. CGI 基础:Web 服务器的'传话筒'
想象一下,Web 服务器(比如 Apache)是个'餐厅老板',它只负责接待客人(用户请求),但不会做菜(处理动态请求)。CGI 脚本就是那个'大厨',当客人点了份'宫保鸡丁'(提交了一个表单),老板就会通过 CGI 这个'传话筒',把订单告诉大厨。大厨做好菜后,再通过老板端给客人。
专业解释 :CGI 是一种标准,定义了 Web 服务器如何与外部脚本(CGI 脚本)进行通信,以处理动态请求。当 Web 服务器收到一个指向 CGI 脚本的请求时,它会执行该脚本,并将请求的详细信息(如表单数据、URL 参数等)作为环境变量或标准输入传递给脚本。脚本处理完请求后,将生成的 HTML 或其他内容作为标准输出返回给 Web 服务器,最终由服务器发送给客户端浏览器。
大白话解读 :你访问一个网站,填了个登录表单,点击'登录'按钮。这时候,Web 服务器就把你的用户名和密码通过 CGI 交给了后台的 Python 脚本。Python 脚本验证了一下,发现你是合法用户,就生成一个'欢迎回来!'的页面,再通过 Web 服务器显示给你看。整个过程,CGI 就是那个负责'沟通'的桥梁。
示例 Python 代码(一个简单的 CGI 脚本) :
import cgi
import cgitb
cgitb.enable()
form = cgi.FieldStorage()
user_name = form.getvalue('name' , '路人甲' )
print ("Content-type:text/html\n\n" )
print ("<html>" )
print ("<head>" )
print ("<title>CGI 脚本初体验</title>" )
print ("</head>" )
print ("<body>" )
print (f"<h2>你好,{user_name} ! 欢迎来到 CGI 的魔法世界!</h2>" )
print ("</body>" )
print ("</html>" )
注意 :要运行 CGI 脚本,你需要一个配置好的 Web 服务器(如 Apache 或 Nginx),并将脚本放在指定的 cgi-bin 目录下,同时赋予它可执行权限。对于现代 Web 开发来说,直接手写 CGI 已经比较少见了,因为它效率不高,而且每次请求都要创建一个新进程,开销很大。于是,更高级的'烹饪工具'——Web 框架,就应运而生了。
2. Python Web 框架:告别'刀耕火种'
如果说手写 CGI 是'刀耕火种',那 Web 框架 就是现代化的'联合收割机'!它们把 Web 开发的各种脏活累活(比如路由、模板渲染、数据库连接、用户认证等)都帮你封装好了,让你能专注于业务逻辑的实现,而不是天天跟 HTTP 协议和服务器配置打交道。
专业解释 :Web 框架是一套提供了构建 Web 应用所需核心功能的库和工具。它们遵循一定的架构模式(如 MVC 或 MVT),通过提供路由系统、模板引擎、ORM(对象关系映射)、会话管理等组件,极大地简化了 Web 应用的开发流程,提高了开发效率和代码的可维护性。
大白话解读 :你想盖个房子,Web 框架就是那个已经帮你打好地基、建好承重墙、铺好水电管道的'半成品'。你只需要根据自己的喜好,装修一下墙面、摆放家具(编写业务代码)就行了,省时又省力。
示例 Python 代码(使用 Flask 框架) :
from flask import Flask, request, render_template_string
app = Flask(__name__)
HTML_TEMPLATE = """
<!DOCTYPE html>
<html>
<head>
<title>Flask Web App</title>
</head>
<body>
<h1>你好,{{ name }}!</h1>
<p>欢迎来到 Flask 的奇妙世界!</p>
<form method="post">
<label for="name">输入你的名字:</label>
<input type="text" name="name">
<button type="submit">提交</button>
</form>
</body>
</html>
"""
@app.route('/' , methods=['GET' , 'POST' ] )
def hello ():
user_name = '路人甲'
if request.method == 'POST' :
user_name = request.form.get('name' , '路人甲' )
return render_template_string(HTML_TEMPLATE, name=user_name)
if __name__ == '__main__' :
app.run(debug=True )
小结一下 :CGI 是 Web 动态化的'老祖宗',它奠定了基础,但现在我们有了更强大的 Web 框架。无论是轻巧灵活的 Flask 、FastAPI ,还是功能全面的'巨无霸'Django ,它们都能让你以前所未有的速度构建出功能强大的 Web 应用。所以,别再纠结于 CGI 的细节了,大胆拥抱 Web 框架吧!
三、Web 服务:程序间的'秘密通道'
想象一下,你的程序是个'社交达人',它不仅能自己处理数据,还想和别的程序'聊天',交换信息,甚至让别的程序帮它干活。这时候,Web 服务 就登场了!它就像程序之间约定好的'秘密通道'和'通用语言',让不同系统、不同语言开发的程序也能无障碍地沟通协作。
专业解释 :Web 服务是一种基于 Web 的、可编程的应用程序组件,它允许不同应用程序之间通过网络进行交互。它通常使用标准化的协议(如 HTTP、XML、JSON)来传输数据,并提供一套接口供其他应用程序调用,从而实现分布式计算和系统集成。
大白话解读 :你的手机 App 想知道今天的天气,它不会自己去测量气温、风速,而是会去问'天气预报服务'这个专门提供天气信息的'程序'。这个'问'和'答'的过程,就是 Web 服务在发挥作用。
1. XML-RPC 与 SOAP:远程调用的'双雄'
在 Web 服务的早期,XML-RPC 和 SOAP 是两个非常流行的'老牌选手'。它们都致力于解决一个核心问题:如何让一个程序调用另一个远程程序的功能,就像调用本地函数一样简单。
XML-RPC (XML Remote Procedure Call)是一种基于 XML 和 HTTP 的轻量级远程过程调用协议。它允许客户端程序调用远程服务器上的函数或方法,并将请求和响应数据封装在 XML 格式中,通过 HTTP 进行传输。它的特点是简单、易于实现。
SOAP (Simple Object Access Protocol)也是一种基于 XML 的协议,用于在分布式环境中交换结构化信息。与 XML-RPC 相比,SOAP 更为复杂和强大,它支持更丰富的数据类型、更复杂的传输机制(如 HTTP、SMTP 等),并提供了更严格的规范和安全性特性。SOAP 通常与 WSDL(Web Services Description Language)结合使用,WSDL 用于描述 Web 服务的接口和操作。
XML-RPC 就像是两个朋友之间用'明信片'交流,明信片上写着'请帮我做这件事',然后寄过去,收到回信就知道结果了。简单直接。
SOAP 则像是一份严谨的'外交公文',里面不仅详细说明了'请帮我做这件事',还规定了公文的格式、加密方式、谁来签收等等。虽然有点繁琐,但非常正式和安全。
示例 Python 代码(XML-RPC 客户端) :
import xmlrpc.client
def xmlrpc_client_example ():
try :
proxy = xmlrpc.client.ServerProxy("http://localhost:8000/RPC2" )
result = proxy.add(5 , 3 )
print (f"XML-RPC 调用结果:5 + 3 = {result} " )
try :
proxy.subtract(10 , 2 )
except xmlrpc.client.Fault as e:
print (f"XML-RPC 错误示例:{e} " )
except ConnectionRefusedError:
print ("错误:无法连接到 XML-RPC 服务器。请确保服务器已启动并运行在 http://localhost:8000/RPC2" )
except Exception as e:
print (f"发生错误:{e} " )
print ("XML-RPC 客户端示例代码已准备好,请启动一个 XML-RPC 服务器后尝试运行。" )
小提示 :虽然 XML-RPC 和 SOAP 在历史上扮演了重要角色,但它们在现代 Web 开发中已经逐渐被更轻量级、更灵活的技术所取代,比如接下来要介绍的 RESTful API。
2. RESTful API:现代 Web 服务的'王者'
如果说 XML-RPC 和 SOAP 是'传统武术',那 RESTful API 就是 Web 服务领域的'现代格斗术'!它更简洁、更高效、更符合 Web 的本质,已经成为构建现代 Web 服务的主流方式。
专业解释 :REST(Representational State Transfer,表述性状态转移)是一种架构风格,而不是协议。RESTful API 是遵循 REST 架构风格的 API 设计。它主要基于 HTTP 协议,利用 HTTP 方法(GET、POST、PUT、DELETE 等)对资源进行操作,并通过 URL 来标识资源。数据通常以 JSON 或 XML 格式传输,具有无状态性、统一接口、分层系统等特点。
大白话解读 :你把 Web 看作一个巨大的图书馆,每本书(资源)都有一个唯一的编号(URL)。你想看书(GET),就告诉管理员书的编号;你想借书(POST),就告诉管理员书的编号和你的信息;你想更新书的信息(PUT),就告诉管理员书的编号和新的信息;你想还书(DELETE),就告诉管理员书的编号。整个过程非常直观,就像和图书馆管理员打交道一样。
生活案例 :你用外卖 App 点餐,App 会向外卖平台的 API 发送一个请求(POST),告诉它你要点什么菜、送到哪里。外卖平台收到请求后,处理订单,然后通过 API 返回一个订单成功的消息。这个过程就是典型的 RESTful API 交互。
示例 Python 代码(使用 requests 库调用 RESTful API) :
import requests
def rest_api_example ():
try :
username = "octocat"
api_url = f"https://api.github.com/users/{username} "
print (f"正在从 {api_url} 获取用户信息..." )
response = requests.get(api_url)
response.raise_for_status()
user_data = response.json()
print ("\n获取到的用户信息:" )
print (f"用户名:{user_data.get('login' )} " )
print (f"姓名:{user_data.get('name' , 'N/A' )} " )
print (f"公司:{user_data.get('company' , 'N/A' )} " )
print (f"粉丝数:{user_data.get('followers' )} " )
print (f"关注数:{user_data.get('following' )} " )
print (f"个人主页:{user_data.get('html_url' )} " )
except requests.exceptions.RequestException as e:
print (f"请求 GitHub API 失败:{e} " )
except Exception as e:
print (f"发生错误:{e} " )
rest_api_example()
总结一下 :Web 服务让程序之间能够'手拉手'一起干活,XML-RPC 和 SOAP 是早期的'握手方式',而 RESTful API 则是现代程序之间最流行的'社交礼仪'。掌握了它们,你的程序就能在互联网上'呼风唤雨'了!
四、拓展方案:让你的技能包更'鼓'
学完了基础知识,是不是觉得意犹未尽?别急,Python 在 Web 领域的'十八般武艺'可不止这些!接下来,我们再来看看几个能让你在 Web 世界里'如虎添翼'的进阶技能,让你的技能包瞬间'鼓'起来!
1. Scrapy 框架:工业级爬虫利器
如果说 Beautiful Soup 是'万能工具箱',那 Scrapy 就是'全自动生产线'!当你需要大规模、高效率地从网站上抓取数据时,Scrapy 就是你的不二之选。它是一个功能强大、高度可定制的 Python 爬虫框架,专为数据抓取和处理而生。
专业解释 :Scrapy 是一个用于抓取网站并从网页中提取结构化数据的应用框架。它提供了一整套组件,包括调度器、下载器、爬虫、管道等,支持异步请求处理,能够高效地处理大量并发请求,并提供了强大的数据处理和存储机制。
大白话解读 :你不是想'搬运'数据吗?Scrapy 就是那个能帮你搭建一个'自动化数据工厂'的框架。你告诉它去哪里'搬',搬什么,怎么'搬',它就能自己吭哧吭哧地帮你把数据搬回来,而且搬得又快又好,还能帮你把数据整理得整整齐齐。
示例 Python 代码(Scrapy 项目结构和核心代码片段) :
import scrapy
class ExampleSpider (scrapy.Spider):
name = "example"
allowed_domains = ["quotes.toscrape.com" ]
start_urls = ["http://quotes.toscrape.com/" ]
def parse (self, response ):
for quote in response.css("div.quote" ):
yield {
"text" : quote.css("span.text::text" ).get(),
"author" : quote.css("small.author::text" ).get(),
"tags" : quote.css("div.tags a.tag::text" ).getall(),
}
next_page = response.css("li.next a::attr(href)" ).get()
if next_page is not None :
yield response.follow(next_page, callback=self .parse)
Scrapy 小贴士 :Scrapy 的强大之处在于其高度的模块化和可扩展性。你可以自定义下载中间件、爬虫中间件、管道等,实现各种复杂的抓取逻辑和数据处理需求。对于需要处理反爬、分布式抓取等高级场景,Scrapy 绝对是你的得力助手!
2. FastAPI:打造高性能 API 的'新贵'
如果你觉得 Flask 已经很棒了,那 FastAPI 会让你惊呼'还有这种操作?!'。它是一个现代、快速(高性能)、基于 Python 标准类型提示的 Web 框架,用于构建 API。如果你想快速开发高性能的 API 服务,FastAPI 绝对是你的'心头好'。
专业解释 :FastAPI 是一个高性能的 Web 框架,它基于 Starlette(用于 Web 部分)和 Pydantic(用于数据验证和序列化)。它利用 Python 3.6+ 的类型提示,自动生成 OpenAPI(以前称为 Swagger)文档,并提供数据验证、依赖注入等功能,使得 API 开发变得极其高效和愉快。
大白话解读 :你想开个'数据接口商店',让别人能方便地从你这里获取数据。FastAPI 就像一个'智能店长',你告诉它你的'商品'(数据接口)长什么样,它就能自动帮你把'商品说明书'(API 文档)写好,还能帮你检查顾客的'订单'(请求参数)是不是合规,确保你的'商店'高效运转。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item (BaseModel ):
name: str
price: float
is_offer: bool | None = None
@app.get("/" )
async def read_root ():
return {"message" : "欢迎来到 FastAPI 的世界!" }
@app.get("/items/{item_id}" )
async def read_item (item_id: int , q: str | None = None ):
return {"item_id" : item_id, "q" : q}
@app.post("/items/" )
async def create_item (item: Item ):
return {"message" : "Item received" , "item" : item}
FastAPI 的魅力 :FastAPI 的自动文档生成功能简直是开发者的福音!你不需要额外编写 API 文档,它会根据你的代码自动生成交互式的 Swagger UI 和 ReDoc 文档,让你的 API 接口一目了然。同时,其异步支持也让它在处理高并发场景时表现出色。
3. Selenium:驾驭'动态'网页的'终极武器'
现在的网页越来越'聪明',很多内容都是通过 JavaScript 动态加载的,或者需要你点击、滚动才能显示出来。这时候,传统的屏幕抓取工具可能就'傻眼'了。别担心,Selenium 就是那个能让你'模拟真人'操作浏览器的'终极武器'!
专业解释 :Selenium 是一个用于 Web 应用程序测试的工具,但它也可以被广泛应用于 Web 抓取。它允许开发者通过编程方式控制浏览器(如 Chrome、Firefox),模拟用户的各种行为,如点击按钮、填写表单、执行 JavaScript、滚动页面等,从而获取动态加载的内容。
大白话解读 :有些网站很'狡猾',你直接用代码去访问,它给你看的是'毛坯房',什么都没有。但你用浏览器打开,它就给你装修得漂漂亮亮。Selenium 就是那个能帮你'开着浏览器'去访问网站的工具,它能像真人一样点击、输入、等待,直到所有内容都加载出来,然后你再'截图'(抓取数据)。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
def selenium_example ():
driver = webdriver.Chrome()
driver.maximize_window()
try :
driver.get("https://www.python.org/" )
print (f"成功访问:{driver.current_url} " )
about_link = driver.find_element(By.LINK_TEXT, "About" )
about_link.click()
print ("点击了 About 链接" )
time.sleep(2 )
print (f"当前页面标题:{driver.title} " )
except Exception as e:
print (f"Selenium 操作失败:{e} " )
finally :
driver.quit()
Selenium 的强大 :Selenium 不仅能抓取数据,还能用于自动化测试、模拟用户行为等。当你需要处理验证码、登录、点击、滚动等复杂交互时,Selenium 就是你的'瑞士军刀'。但它也有缺点,就是运行速度相对较慢,资源消耗较大,因为它需要真正启动一个浏览器。
五、总结
好了,今天的 Python Web 之旅就到这里啦!我们一起探索了如何从 Web 世界'捞金'(屏幕抓取),如何让你的网页'活'起来(CGI 与 Web 框架),以及如何让程序之间'隔空对话'(Web 服务)。是不是感觉 Python 在 Web 领域简直是无所不能?
从最初的正则表达式'文本手术刀',到 Beautiful Soup 的'万能工具箱',再到 Web 框架的'自动化生产线',以及 Web 服务的'秘密通道',Python 为我们打开了通往 Web 世界的大门。无论是想成为一个数据侦探,还是一个 Web 应用架构师,亦或是一个 API 设计师,Python 都能助你一臂之力!
希望这些内容能为你接下来的开发工作提供实实在在的帮助。如果在实践中遇到具体问题,不妨回头看看这些基础概念,往往能找到突破口。
相关免费在线工具 curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online