爬虫是什么:让程序替你读网页

你想收集 100 个网页的标题,手动一个个复制粘贴要半天。爬虫就是写个程序自动打开这些网页、把需要的文字抓下来存成表格。

爬虫是 Python 最实用的方向之一——但也是最容易踩法律红线的方向。学爬虫的第一件事不是写代码,而是搞清楚什么能爬、什么不能爬。

会写爬虫是技术,知道不爬什么是修养。
本文核心知识点
  • requests拿网页源码。
  • BeautifulSoup解析 HTML。
  • robots.txt网站的规则。
  • 合规不碰隐私、不打挂服务器。
Python 爬虫配图:蓝色渐变背景上一只可爱的卡通蜘蛛机器人坐在大蜘蛛网中央,蜘蛛网上挂着空白小卡片,旁边漂浮放大镜、数据表格、小齿轮和一颗小心心
蜘蛛机器人 = 爬虫。但它只能爬公开、允许爬的网页。

requests:拿到网页源码

requests 是 Python 最常用的 HTTP 库。一行代码就能拿到一个网页的全部 HTML:

import requests

r = requests.get("https://example.com")
print(r.status_code)   # 200 表示成功
print(r.text)          # 网页的 HTML 源码

浏览器打开网页做的事,requests 都能做——只是它把源码直接给你,而不是渲染成好看的页面。

BeautifulSoup:从源码里提取标题

拿到一大段 HTML 字符串,肉眼找标题很累。BeautifulSoup 帮你按标签查找:

from bs4 import BeautifulSoup

soup = BeautifulSoup(r.text, "html.parser")
title = soup.find("title").text
print(title)

find("h1") 找一级标题、find_all("a") 找所有链接、find(class_="news") 找指定 class 的元素。几行代码就能把网页里你要的文字全部抓出来。

robots.txt:网站的"欢迎牌"

每个网站根目录都有一个 robots.txt(比如 https://example.com/robots.txt),写着"哪些路径允许爬虫抓、哪些不允许"。

写爬虫之前,先看看这个文件。它说 Disallow 的路径,就不要去爬。这是国际通行的爬虫礼仪,也是很多国家法律认可的规则。

礼貌爬取:别把服务器打挂

爬虫一秒钟发 1000 个请求,小网站服务器直接宕机。礼貌爬取要做到:

  • 每个请求之间 sleep 1-2 秒。
  • 设置 User-Agent 说明自己是谁。
  • 只爬你需要的页面,不要全站爬。
  • 失败了别立刻重试,等一会再来。
import time
time.sleep(2)   # 每次请求后等 2 秒