别啃教程了,15行代码写出你的第一个爬虫
最近有朋友问我,想学Python但不知道从哪下手。我的建议一向很直接:别啃教程了,写个爬虫吧。
学Python最好的切入点就是爬虫,代码不多,但跑出来的那一刻你会觉得"原来我也能写程序",这个感觉比看一百集教程都管用。下面花5分钟搞定你的第一个爬虫,仅作参考,如有不对请指正。
01 爬虫到底在干什么
简单说,爬虫就是"模拟人打开网页,然后把内容存下来"。
你平时浏览网页的过程:打开浏览器,输入网址,看到页面内容。
爬虫做的事情一模一样:用代码发请求,拿到网页源码,提取你要的数据。
区别只在于:你不用手动一条条复制了。
02 环境准备
两样东西,装好就能开工。
1、Python
去官网(python.org)下载Python 3.10以上版本,安装时勾选"Add Python to PATH",一路下一步。
验证安装是否成功,打开命令行输入:
python --version能看到版本号就行。
2、两个第三方库
打开命令行,执行:
pip install requests beautifulsoup4requests:负责发网络请求,你可以理解为"帮你打开网页"。
beautifulsoup4:负责解析网页内容,你可以理解为"帮你从网页里找东西"。
装完这两步,环境就齐了。
03 写第一个爬虫
目标:抓取一个测试网站(quotes.toscrape.com)的名言和作者。
这个网站是专门给新手练手用的,不用担心合规问题。
直接上代码:
import requests
from bs4 import BeautifulSoup
# 1、发请求,拿到网页源码
response = requests.get("https://quotes.toscrape.com/")
# 2、解析网页
soup = BeautifulSoup(response.text, "html.parser")
# 3、提取名言和作者
quotes = soup.find_all("span", class_="text")
authors = soup.find_all("small", class_="author")
# 4、打印结果
for i in range(len(quotes)):
print(f"名言:{quotes[i].text}")
print(f"作者:{authors[i].text}")
print("-" * 30)保存为 spider.py,然后运行:
python spider.py你会看到屏幕上刷出来一条条名言和作者,这就是你的第一个爬虫。
整个代码不到15行,核心逻辑就三步:发请求,解析,提取。
04 把数据存下来
光打印在屏幕上不够,我们把数据存成文本文件。
在代码末尾加上:
with open("名言.txt", "w", encoding="utf-8") as f:
for i in range(len(quotes)):
f.write(f"名言:{quotes[i].text}\n")
f.write(f"作者:{authors[i].text}\n")
f.write("-" * 30 + "\n")运行后,同级目录下会生成一个「名言.txt」,打开就能看到抓取的数据。
encoding="utf-8"这个参数别漏,不然中文会乱码。
05 踩得坑
1、requests直接报错ConnectionError
大概率是网络问题。如果你在公司内网,可能需要配置代理:
import os
os.environ["http_proxy"] = "http://你的代理地址:端口"2、BeautifulSoup找不到数据
最常见的原因:网页内容是JavaScript动态加载的,requests拿到的源码里没有你要的数据。
判断方法:在浏览器里打开网页,右键"查看源代码",如果你要的数据在源码里能看到,说明requests能抓到;如果看不到,说明是动态加载的,需要换用selenium或playwright。
3、抓到的中文乱码
两个地方检查:
- requests响应编码:response.encoding = "utf-8"
- 文件写入编码:open()里加encoding="utf-8"
4、被封IP
练手阶段一般不会遇到。但如果频繁请求同一个网站,建议加个延迟:
import time
time.sleep(1) # 每次请求间隔1秒06 总结
通过本指南你已经掌握了:
- 爬虫的基本原理(发请求,解析,提取)
- requests + BeautifulSoup的用法
- 数据存储到本地文件
- 常见报错的排查思路
下一步可以尝试:翻页抓取、存入Excel、存入数据库。
爬虫的核心不是代码量,而是"你知道自己想要什么数据,然后去拿"。工具只是手段,思路才是关键。
原创发布在 袁与张 站点,允许转载,但转载请备注来源!
暂无评论数据