《Python 写爬虫第一课:requests 的三个避坑点》
刚学 Python 的人写第一个爬虫,十有八九先装 requests。库本身很简单,真正让人卡住的往往是三处细节,提前知道能省不少调试时间。
第一,别忘了超时。requests.get 默认没有超时,网络一卡住,程序就一直挂在那里不动。新手常以为是代码死循环,其实只是请求没回来。养成习惯:每次请求都带上 timeout,比如 timeout=10。超时后捕获异常、打印提示再决定重试,比干等要体面得多。
第二,分清 text 和 content。拿到响应后,response.text 是解码后的字符串,编码猜错就会出现乱码;response.content 是原始字节,适合保存图片、文件这类二进制内容。网页乱码时先看 response.encoding 对不对,手动指定成页面实际编码往往就好了;下载文件则直接用 content 写二进制,别经过 text 转一道。
第三,请求头别用默认。不少网站会挡住没有 User-Agent 的请求,返回 403 或者空页面。加一个常见的浏览器 User-Agent,很多"代码没错但拿不到数据"的问题就消失了。顺带提醒一句:爬取要遵守目标站点的 robots 协议和法律法规,只拿公开数据,别碰需要登录的个人信息,别高频刷请求给对方服务器添负担。
最后说个调试习惯:先用 print 把状态码和一小段响应内容打出来,确认拿到的是想要的页面,再往下解析。状态码 200 不代表内容正确,可能是反爬页面;先看内容,再写解析逻辑,返工最少。
requests 只是起点,后面还有解析、异常重试、数据存储要学。但把超时、编码、请求头这三处处理好,第一个爬虫就能稳稳跑起来。
- 点赞
- 收藏
- 关注作者
评论(0)