news 2026/4/25 9:28:23

初学者如何用 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/4/18 6:31:04

IDEA社区版如何用AI插件提升开发效率?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个IDEA社区版的AI插件集成指南应用。功能包括&#xff1a;1) 展示主流AI代码补全工具(Kite/TabNine/Copilot)的安装配置流程 2) 对比各工具在Java/Kotlin项目中的补全准确率…

作者头像 李华
网站建设 2026/4/23 16:08:17

企业级VMWARE虚拟化实战:从下载到部署全流程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个企业级VMWARE部署指导应用&#xff0c;包含以下模块&#xff1a;1.官方下载源验证和版本比对工具&#xff1b;2.分步骤安装向导(图文视频)&#xff1b;3.典型企业部署场景…

作者头像 李华
网站建设 2026/4/20 10:14:13

AI如何帮你轻松掌握CSS的nth-child选择器

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式CSS nth-child选择器学习工具&#xff0c;用户输入HTML结构后&#xff0c;AI自动生成对应的nth-child选择器代码&#xff0c;并实时显示匹配的元素。支持常见用例如…

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

银河麒麟V11 vs Windows:国产系统的效率革命

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个银河麒麟V11性能对比测试工具&#xff0c;包含文件操作、多任务处理、网络传输等测试项&#xff0c;自动生成与Windows系统的对比报告。要求支持自定义测试场景&#xff0…

作者头像 李华
网站建设 2026/4/24 9:30:40

5个开源嵌入模型部署教程:Qwen3-Embedding-4B镜像免配置推荐

5个开源嵌入模型部署教程&#xff1a;Qwen3-Embedding-4B镜像免配置推荐 你是否还在为部署一个高性能、多语言、开箱即用的文本嵌入服务而反复调试环境、编译依赖、修改配置&#xff1f;是否试过多个框架却卡在CUDA版本不兼容、tokenization报错、或API接口不一致上&#xff1…

作者头像 李华
网站建设 2026/4/20 21:57:14

PyTorch开发环境怎么选?官方底包镜像优势一文详解

PyTorch开发环境怎么选&#xff1f;官方底包镜像优势一文详解 你是不是也经历过这样的场景&#xff1a;刚准备开始训练模型&#xff0c;结果卡在环境配置上一整天&#xff1f;依赖冲突、CUDA版本不匹配、pip源太慢……这些琐事不仅浪费时间&#xff0c;还严重打击学习和开发的…

作者头像 李华