news 2026/5/29 4:50:50

初学者如何用 Python 写第一个爬虫?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
初学者如何用 Python 写第一个爬虫?

初学者写第一个Python 爬虫的最友好路径,通常是使用requests + BeautifulSoup4的组合。这套组合在 2026 年仍然是入门首选:简单、强大、社区资源最多。

目标:爬取一个静态网页(比如“豆瓣图书 Top 250” 或 “示例网站”),提取书名、评分、简介等信息,并打印出来。

第一步:准备环境(5 分钟)

确保你已经安装 Python(推荐 3.10+ 或 3.11/3.12/3.13)。

在命令行(cmd / PowerShell / 终端)执行:

pipinstallrequests beautifulsoup4

验证安装:

importrequestsfrombs4importBeautifulSoupprint("安装成功!")

第二步:最简单可运行的第一个爬虫(复制粘贴就能跑)

我们选择一个非常友好的练习目标:httpbin.org(专门给爬虫练习用的网站,不会封 IP,也不会变结构)。

# 文件名可以叫:my_first_spider.pyimportrequestsfrombs4importBeautifulSoup# 1. 目标网址url="https://httpbin.org/html"# 2. 发送请求(模拟浏览器)headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}try:response=requests.get(url,headers=headers,timeout=10)response.raise_for_status()# 非 200 就抛异常exceptExceptionase:print("请求失败:",e)exit()# 3. 把网页内容交给 BeautifulSoup 解析soup=BeautifulSoup(response.text,"html.parser")# 4. 提取我们想要的内容# 这个页面有一个 <h1> 标题 和一段正文title=soup.find("h1").get_text(strip=True)content=soup.find("div",class_="jumbotron").p.get_text(strip=True)print("页面标题:",title)print("主要内容:")print(content)

运行方式

python my_first_spider.py

预期输出类似:

页面标题:Herman Melville - Moby-Dick 主要内容: ...</p>

恭喜!你已经成功完成了第一个爬虫!

第三步:升级版 —— 爬取真实网页(豆瓣图书 Top 250 前 10 本)

目标网址:https://book.douban.com/top250

importrequestsfrombs4importBeautifulSoupimporttime headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}books=[]forpageinrange(0,2):# 前两页(前50本),初学者先爬前10本即可url=f"https://book.douban.com/top250?start={page*25}"try:response=requests.get(url,headers=headers,timeout=8)response.raise_for_status()exceptExceptionase:print(f"第{page+1}页请求失败:{e}")continuesoup=BeautifulSoup(response.text,"html.parser")# 找到所有图书的 <tr> 行items=soup.select("tr.item")foriteminitems:title_tag=item.select_one(".pl2 a")title=title_tag.get_text(strip=True)iftitle_tagelse"未知"author_tag=item.select_one("p.pl")author_info=author_tag.get_text(strip=True)ifauthor_tagelse""rating_tag=item.select_one(".rating_nums")rating=rating_tag.get_text(strip=True)ifrating_tagelse"无评分"quote_tag=item.select_one(".inq")quote=quote_tag.get_text(strip=True)ifquote_tagelse""books.append({"书名":title,"作者/出版信息":author_info,"评分":rating,"短评":quote})print(f"第{page+1}页爬取完成,已有{len(books)}本书")time.sleep(2)# 非常重要!防止被封# 打印前 10 本print("\n前 10 本书:")fori,bookinenumerate(books[:10],1):print(f"{i}. 《{book['书名']}》 评分:{book['评分']}{book['短评']}")

运行前注意

  • 第一次运行很可能成功,但如果频繁运行,豆瓣可能会暂时限制你的 IP。
  • 真实爬虫必须加延时(time.sleep(1~5))。
  • 建议只跑一次,保存结果,不要反复运行。

第四步:常见问题 & 避坑指南(初学者最容易踩的 8 个点)

问题现象解决方案
403 Forbidden被网站拒绝加真实的 User-Agent + 随机延时
404 / 连接超时网络问题加 timeout=10 + try-except
提取不到内容find / select 返回 None右键“检查元素” → 确认 class/id 正确
乱码中文显示 ???response.encoding = ‘utf-8’
被封 IP跑几页就 403/429加代理(proxies)、降低频率、用 requests.Session() 保持会话
动态加载数据为空切换到 Selenium(浏览器自动化)或找 API
道德/法律爬私有/收费内容只爬公开数据,遵守 robots.txt,控制频率
代码太乱后期维护难把请求、解析、保存拆成函数

第五步:下一步推荐(学完第一个爬虫后)

  1. 保存数据→ 用 csv 或 json 存储

    importcsvwithopen("douban_top250.csv","w",newline="",encoding="utf-8")asf:writer=csv.DictWriter(f,fieldnames=["书名","作者/出版信息","评分","短评"])writer.writeheader()writer.writerows(books)
  2. 学习 XPath / CSS 选择器(更精准定位)

  3. 掌握 requests 高级用法(代理、cookies、session、重试)

  4. 尝试简单反爬网站(如 quotes.toscrape.com)

  5. 进阶工具:Scrapy(框架级)、Playwright / Selenium(动态页)、httpx(异步)

一句话总结给初学者:

先用requests + BeautifulSoup爬 1~2 个静态网站,成功后再考虑反爬、动态页、框架。

如果你运行上面代码遇到具体报错,把错误信息贴出来,我帮你 debug。

现在就去试试吧!第一个爬虫跑通的那一刻真的很爽~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 18:18:56

DBSCAN实战:电商用户行为聚类分析案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个电商用户行为分析系统。输入用户浏览时长、点击次数等行为数据&#xff0c;使用DBSCAN算法将用户分为不同群体。要求输出每个群体的特征描述、可视化散点图&#xff0c;并…

作者头像 李华
网站建设 2026/5/28 18:30:26

看完就想试!CosyVoice2-0.5B打造个性化语音项目

看完就想试&#xff01;CosyVoice2-0.5B打造个性化语音项目 1. 为什么这个语音克隆工具让人眼前一亮&#xff1f; 你有没有想过&#xff0c;只需要几秒钟的录音&#xff0c;就能让AI用你的声音说话&#xff1f;甚至还能让它说英文、日文&#xff0c;或者用四川话跟你打招呼&a…

作者头像 李华
网站建设 2026/5/28 18:21:50

近屿智能的深夜来电:那些“付费上班”的年轻人,后来怎么样了?

第一份工作的收入&#xff0c;有时不够支付在大城市“呼吸”的成本。但故事的走向&#xff0c;并非只有一种可能。一、呼吸账单&#xff1a;5530元&#xff0c;只是活着的价格最近&#xff0c;一个扎心话题在社交媒体上火了——“付费上班”。你没听错&#xff0c;不是赚钱&…

作者头像 李华
网站建设 2026/5/29 0:11:06

Speech Seaco Paraformer HTTPS部署:反向代理与SSL证书配置教程

Speech Seaco Paraformer HTTPS部署&#xff1a;反向代理与SSL证书配置教程 1. 引言&#xff1a;让语音识别服务更安全、更易用 你有没有遇到过这样的情况&#xff1a;好不容易把一个中文语音识别模型跑起来了&#xff0c;结果只能在本地通过 http://localhost:7860 访问&…

作者头像 李华
网站建设 2026/5/28 21:49:08

Python新手必看:轻松搞定库依赖错误的5个步骤

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个面向初学者的Python库依赖解决教程项目。要求&#xff1a;1) 交互式错误诊断向导&#xff1b;2) 图形化界面展示解决步骤&#xff1b;3) 一键修复功能&#xff1b;4) 新手…

作者头像 李华
网站建设 2026/5/28 18:19:05

AI一键搞定Maven环境配置:告别繁琐安装教程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个智能Maven安装助手应用&#xff0c;要求&#xff1a;1.自动检测用户操作系统类型和JDK版本 2.根据检测结果生成对应的Maven安装指南 3.提供国内镜像源自动配置功能 4.包含…

作者头像 李华