常见SEO泡沫云服务器人工智能之编程进阶Python高级:第十一章过渡项目
阿里云服务器进去黑屏
人工智能之编程进阶 Python高级
第十一章 过渡项目
以下是5 个由浅入深、覆盖 Python 核心技能的实战项目,每个项目都包含:
项目目标技术栈(知识点)功能模块实现要点与代码片段扩展建议适合从入门到进阶的学习者动手实践,真正学以致用。
项目一:天气查询 CLI 工具(基础)
目标
通过命令行输入城市名,返回当前天气信息。
技术栈
requests(HTTP 请求)argparse(命令行参数解析)JSON 数据处理异常处理免费 API 调用(如 Open-Meteo 或国内聚合 API)✅ 适合刚学完函数、模块、异常的新手
功能
输入城市 → 输出温度、天气状况支持多城市查询网络错误友好提示实现要点
1. 获取免费天气 API
推荐 Open-Meteo(无需 Key):
示例:通过经纬度查天气(需先查城市坐标)defget_weather(lat, lon): url= f"https://api.open-meteo.com/v1/forecast"params= {"latitude": lat,"longitude": lon,"current_weather": True } resp = requests.get(url,params=params) data = resp.json()returndata["current_weather"]2. 命令行接口
importargparse parser = argparse.ArgumentParser(description="天气查询工具") parser.add_argument("city", help="城市名,如 Beijing") args = parser.parse_args() weather = get_weather_by_city(args.city) print(f"{args.city}当前温度:{weather[temperature]}°C")3. 城市转经纬度(简化版)
可内置一个小型字典:
CITY_COORDS={"Beijing":(39.9042,116.4074),"Shanghai":(31.2304,121.4737),可扩展为读取 CSV 或调用地理编码 API}扩展建议
使用 geopy 自动将城市名转经纬度添加缓存(避免重复请求)输出彩色文字(colorama 库)支持历史天气、未来预报项目二:静态网页爬虫 + 数据分析(中级)
目标
爬取豆瓣电影 Top 250,保存为 CSV,并做简单统计。
技术栈
requests(获取页面)BeautifulSoup(解析 HTML)pandas(数据分析)csv / json(数据存储)正则表达式(可选)功能
自动翻页(共 10 页)提取:电影名、评分、导演、年份保存为 movies.csv分析:平均分、最高分电影、年份分布实现要点
阿里云服务器cpu跑满
1. 爬取单页
url ="https://movie.douban.com/top250"headers = {"User-Agent":"Mozilla/5.0"} resp = requests.get(url, headers=headers) soup = BeautifulSoup(resp.text,"lxml") for item in soup.select(".item"): title = item.select_one(".title").text rating = item.select_one(".rating_num").text year = item.select_one(".bd p").text.split()[-1].strip("()")2. 自动翻页
all_movies=[]forstart in range(0, 250, 25):page_url=f"https://movie.douban.com/top250?start={start}"movies=parse_page(page_url)all_movies.extend(movies)time.sleep(1)礼貌延迟3. 保存与分析
importpandasaspd df = pd.DataFrame(all_movies) df.to_csv("douban_top250.csv", index=False) print("平均分:", df["rating"].astype(float).mean()) print("最高分电影:\n", df.loc[df["rating"].astype(float).idxmax()])⚠️ 注意
遵守 robots.txt添加随机 User-Agent 和延迟,避免被封扩展建议
用 matplotlib 可视化评分分布存入 SQLite / MySQL部署为定时任务(每天更新)项目三:动态网站爬虫 —— 模拟登录 + 数据抓取(中高级)
目标
自动登录 GitHub,抓取用户仓库列表。
技术栈
selenium(浏览器自动化)WebDriverWait(显式等待)Cookie / Session 管理无头模式(Headless)✅ 掌握真实场景中的反爬对抗
功能
自动打开 Chrome输入用户名密码(或 Token)登录后跳转到 /username?tab=repositories提取仓库名、语言、Star 数保存为 JSON实现要点
1. 启动浏览器(无头)
fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC options = webdriver.ChromeOptions() options.add_argument("--headless") driver = webdriver.Chrome(options=options)2. 模拟登录
driver.get("https://github.com/login")driver.find_element(By.ID,"login_field").send_keys("your_email")driver.find_element(By.ID,"password").send_keys("your_password")driver.find_element(By.NAME,"commit").click() 等待登录成功WebDriverWait(driver,10).until( EC.presence_of_element_located((By.CSS_SELECTOR,"header[role=banner]")) )安全建议:使用 GitHub Personal Access Token 代替密码!
3. 抓取仓库
driver.get(f"https://github.com/{username}?tab=repositories")repos=[]forrepo in driver.find_elements(By.CSS_SELECTOR,"li.public"):name= repo.find_element(By.CSS_SELECTOR,"h3 a").textstars= repo.find_element(By.CSS_SELECTOR,"svg.octicon-star").text.strip()repos.append({"name": name,"stars": stars})扩展建议
用 pickle 保存登录后的 Cookie,下次免登录支持两步验证(需手动扫码或备用码)并发抓取多个用户(配合 threading)项目四:异步高并发爬虫(高级)
目标
并发抓取 100 个网页,比同步快 10 倍以上。
技术栈
小米5s plus云服务器
asyncio + aiohttp(异步 HTTP)协程(coroutine)限流(semaphore)异常重试机制功能
读取 URL 列表(如 urls.txt)异步并发请求(控制最大并发数)成功/失败分别记录统计耗时实现要点
1. 异步请求函数
importaiohttpimportasyncioasyncdeffetch(session, url):try:asyncwithsession.get(url, timeout=10)asresp:returnawaitresp.text()exceptExceptionase:returnNoneasyncdefmain():urls = [line.strip()forlineinopen("urls.txt")]限制并发数(防止被封)semaphore = asyncio.Semaphore(20)asyncdefbounded_fetch(url):asyncwithsemaphore:returnawaitfetch(session, url)asyncwithaiohttp.ClientSession()assession: tasks = [bounded_fetch(url)forurlinurls] results =awaitasyncio.gather(*tasks) print(f"成功:{len([rforrinresultsifr])}/{len(urls)}")扩展建议
结合 BeautifulSoup 解析内容将结果存入数据库(异步 ORM 如 databases)集成日志系统(logging)项目五:Scrapy 专业爬虫 + Web API(工程化)
目标
构建一个可配置、可扩展、可部署的新闻爬虫系统。
技术栈
Scrapy(核心框架)Scrapy-Splash 或 scrapy-selenium(处理 JS)Item Pipeline(数据清洗 + 存储)FastAPI(提供查询接口)Docker(容器化部署)功能
爬取多个新闻站点(如 BBC、Reuters)提取:标题、正文、发布时间、URL去重(基于 URL 指纹)存入 PostgreSQL提供 RESTful API 查询新闻实现要点
1. Scrapy Spider(多站点)
classNewsSpider(scrapy.Spider):name ="news"start_urls = ["https://www.bbc.com/news","https://www.reuters.com/world/"]defparse(self, response):if"bbc.com"inresponse.url:yieldfromself.parse_bbc(response)elif"reuters.com"inresponse.url:yieldfromself.parse_reuters(response)2. Pipeline 存数据库
pipelines.pyclassPostgresPipeline:defopen_spider(self, spider):self.conn = psycopg2.connect(...)self.cur =self.conn.cursor()defprocess_item(self, item, spider):self.cur.execute("INSERT INTO news (title, content, url) VALUES (%s, %s, %s)", (item[title], item[content], item[url]) )self.conn.commit()returnitem3. FastAPI 查询接口
api.pyfromfastapiimportFastAPIimportpsycopg2 app = FastAPI()@app.get("/news")defget_news(keyword: str = None):查询数据库cur.execute("SELECT * FROM news WHERE title ILIKE %s", (f"%{keyword}%",))returncur.fetchall()4. Dockerfile(一键部署)
FROMpython:3.10COPY. /appWORKDIR/appRUNpip install -r requirements.txtCMD["scrapy", "crawl", "news"]扩展建议
添加 Redis 去重(Scrapy-Redis)部署到云服务器(AWS / 阿里云)添加定时任务(cron + scrapy crawl)前端展示(Vue/React)总结:项目进阶路线图
项目
难度
核心能力
天气 CLI 工具
⭐
基础语法 + API 调用
豆瓣电影爬虫
⭐⭐
静态页解析 + 数据分析
GitHub 登录爬虫
⭐⭐⭐
动态渲染 + 自动化
异步高并发爬虫
⭐⭐⭐⭐
异步编程 + 性能优化
Scrapy + API 系统
⭐⭐⭐⭐⭐
工程化 + 部署
✅ 动手建议
1.从项目一做起,确保每一步都能运行2.代码提交到 GitHub,写好 README3.逐步扩展功能,不要追求一步到位4.遇到问题查文档:官方文档是最好的老师!记住:编程不是看会了,而是做会了。完成一个项目,胜过十篇教程。
后续
由于以上小项目涉及到未学习的内容,比如数据分析等,可以做过渡练习使用。部分代码已经上传至gitee,后续会逐步更新,主要受时间原因限制,当然自己也可以克隆到本地学习拓展。
祝你 coding 快乐,早日成为 Python 高手!✨
资料关注
公众号:咚咚王gitee:ai_learning: 人工智能学习和实践
《Python编程:从入门到实践》《利用Python进行数据分析》《算法导论中文第三版》《概率论与数理统计(第四版) (盛骤) 》《程序员的数学》《线性代数应该这样学第3版》《微积分和数学分析引论》《(西瓜书)周志华-机器学习》《TensorFlow机器学习实战指南》《Sklearn与TensorFlow机器学习实用指南》《模式识别(第四版)》《深度学习 deep learning》伊恩·古德费洛著 花书《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen) 》《自然语言处理综论 第2版》《Natural-Language-Processing-with-PyTorch》《计算机视觉-算法与应用(中文版)》《Learning OpenCV 4》《AIGC:智能创作时代》杜雨+&+张孜铭《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》《从零构建大语言模型(中文版)》《实战AI大模型》《AI 3.0》
云付服务器
推荐阅读
- hyy云服务器NameSilo托管域名快速转移到腾讯云,仅需15分钟! 2025-12-21 19:40:48
- 阿里云服务器qq三国腾讯官宣AI成果:50%的新增代码由AI辅助生成 2025-12-21 19:30:44
- 阿里云服务器登陆不上去告别迷茫,手把手教你进行排污登记网上填报,记得收藏 2025-12-21 19:20:41
- 轻云服务器尊享版不懂编程代码?只需5分钟你也能造一个自己的AI智能体 2025-12-21 19:10:37
- 云服务器url我的世界1.21.11第4预览版发布:发器与鹦鹉螺的优化来了! 2025-12-21 19:00:31

