刚接触爬虫时,很多人会觉得'不就是写几行代码抓数据吗?'——但真正上手才发现,要么爬不到数据,要么代码跑一半崩了,甚至 IP 直接被目标网站拉黑。其实,这些问题大多不是因为技术难度,而是新手容易忽略的'基础坑'。今天就来盘点 5 个最常见的爬虫错误,看看你有没有踩过,以及该怎么避开。
错误 1:无视 Robots 协议,踩线法律与道德红线
很多新手拿到一个目标网站,二话不说就写代码发起请求,却完全没注意网站的'访问规则'——Robots 协议(也叫机器人协议)。这不仅是'不礼貌',严重时可能触及法律风险。
为什么这是坑?
Robots 协议是网站通过根目录下的robots.txt文件(比如百度的 https://www.baidu.com/robots.txt),明确告诉爬虫'哪些内容可以爬,哪些不能爬,爬的频率不能超过多少'。新手忽略它,可能会:
- 爬取网站禁止的敏感数据(如用户隐私、付费内容),违反《网络安全法》《数据安全法》;
- 即使爬公开内容,也可能因'未遵守规则'被网站判定为'恶意爬虫',直接封禁 IP。
怎么改?
- 爬之前先查 Robots 协议:在目标网站域名后加
/robots.txt,比如想爬知乎就看 https://www.zhihu.com/robots.txt; - 严格遵守协议指令:比如协议写
Disallow: /api/v4/,就绝对不要爬/api/v4/开头的接口; - 即使协议允许,也别'得寸进尺'——比如协议没限制频率,也别每秒发 10 个请求,给服务器留缓冲。
错误 2:不伪装请求头,被网站'一眼识别'为爬虫
新手最常遇到的问题之一:代码没报错,但返回的内容是空的,或者直接提示'403 Forbidden'(禁止访问)。这大概率是因为没做'请求伪装',被网站轻松识破是爬虫。
为什么这是坑?
浏览器发起请求时,会附带User-Agent(浏览器标识)、Cookie等'请求头信息',告诉网站'我是真实用户在浏览'。而新手直接用requests.get(url)发起请求,默认的User-Agent是'python-requests/2.28.1'——网站一看就知道'这是爬虫,拒绝!'。
比如你爬知乎时,没加请求头的代码可能是这样:
import requests
url = "https://www.zhihu.com/question/123456"
response = requests.get(url)
print(response.text) # 结果可能是 403 页面,或者空内容
怎么改?
给请求加'伪装头',核心是补全User-Agent,复杂场景可加Cookie(模拟登录状态):
- 从浏览器复制真实
User-Agent:打开浏览器 F12→Network→随便点一个请求→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;


