1
爬虫入门与法律道德
Intro to Web Scraping
先别急着写代码。搞清楚"爬虫是什么、能干嘛、什么不能爬",比写得快更重要。爬虫写得好,牢饭吃到老——这不是玩笑,真有人因为爬了不该爬的进去了。
论爬虫能干嘛
数据分析:爬招聘网站看市场行情。价格监控:盯竞品降价。舆情监测:抓微博/论坛口碑。搜索引擎:Google 本质就是个超大爬虫。学术研究:爬论文摘要做统计。这些都是正当用途。
法律与道德:红线别踩
| 红线 | 说明 |
|---|---|
| robots.txt | 网站的"请勿打扰牌",写了 Disallow 的路径别爬。不是法律,是君子协定,但尊重它。 |
| 版权内容 | 爬全文转载/商用,可能侵权。标题、摘要可以,全文慎重。 |
| 个人信息 | 身份证、手机号、住址——《个人信息保护法》管着,别碰。 |
| 登录墙后数据 | 要登录才能看的内容,爬它等于"未授权访问"。 |
| 别把人打挂 | 控制频率,一秒一个请求顶天了。几百并发打别人服务器,DOS 警告。 |
爬虫基本流程
# 四步走:发请求 → 获取响应 → 解析数据 → 存储数据
1. requests.get(url) # 发 HTTP 请求
2. response.text # 拿到 HTML
3. BeautifulSoup(html).find(...) # 提取要的数据
4. csv.writer / mysql insert # 存下来
HTTP 状态码速查
| 状态码 | 含义 | 爬虫怎么办 |
|---|---|---|
| 200 | 成功 | 正常解析 |
| 301/302 | 重定向 | requests 自动跟,看 resp.url |
| 403 | 禁止访问 | UA 不对/被封,换 UA/代理 |
| 404 | 找不到 | URL 错了或页面已删 |
| 429 | 请求太多 | 被限流,降速 |
| 500/502/503 | 服务器错误 | 对方挂了,等会重试 |
常用请求头详解
| 请求头 | 作用 |
|---|---|
| User-Agent | 客户端身份,不带或太假就被识别成爬虫 |
| Referer | 从哪跳来的,有些防盗链网站检查这个 |
| Cookie | 登录态,爬登录后页面必带 |
| Accept | 能接受什么格式(text/html, application/json) |
| Accept-Language | 能接受的语言(zh-CN) |
| Authorization | API token(Bearer xxx) |
| X-Requested-With | 标记 AJAX 请求(XMLHttpRequest) |
HTTP 基础:爬虫的地基
| 概念 | 要点 |
|---|---|
| GET / POST | GET 取数据(参数在 URL),POST 提交数据(参数在 body)。爬虫主要用 GET。 |
| User-Agent | 告诉服务器"我是谁"。Python 默认的 UA 很容易被识别成爬虫,要伪装成浏览器。 |
| Referer | 从哪个页面跳过来的。有些网站检查这个。 |
| Cookie | 维持登录状态。要爬登录后的页面,得带上 Cookie。 |
| 状态码 | 200 成功;301/302 跳转;403 被拒;404 找不到;500 服务器错。 |