爬虫是什么:让程序替你读网页
你想收集 100 个网页的标题,手动一个个复制粘贴要半天。爬虫就是写个程序自动打开这些网页、把需要的文字抓下来存成表格。
爬虫是 Python 最实用的方向之一——但也是最容易踩法律红线的方向。学爬虫的第一件事不是写代码,而是搞清楚什么能爬、什么不能爬。
会写爬虫是技术,知道不爬什么是修养。
本文核心知识点
- requests拿网页源码。
- BeautifulSoup解析 HTML。
- robots.txt网站的规则。
- 合规不碰隐私、不打挂服务器。
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 秒
合规红线:什么不能爬
这些东西绝对不能碰:
- 登录后才能看的内容:需要账号密码的页面,爬了就是非法入侵。
- 个人隐私数据:手机号、身份证、住址,爬了要负法律责任。
- 付费墙后面的内容:别人花钱才能看的,爬了就是盗窃。
- 明确声明禁止爬的网站:robots.txt 写了 Disallow 的。
可以爬的:公开新闻标题、政府公开数据、开源项目列表、你自己做的网页练习。
本节用到的核心结构
- requests.get拿网页。
- BeautifulSoup解析 HTML。
- time.sleep礼貌间隔。
- robots.txt网站规则。
从爬虫到数据分析
爬虫抓到数据后,下一步就是用前一篇学的 pandas 分析:
- 抓 100 条公开新闻标题,统计哪类词出现最多。
- 抓公开图书列表,画一张出版社柱状图。
- 抓政府公开的天气数据,分析一年的气温趋势。
爬虫 + 数据分析,就是数据科学家的日常工作。从青少年编程开始练这个组合,未来不管做什么方向都用得上。
技术让你抓得到数据,规矩让你睡得着觉。