爬虫到底是个啥
自动抓网页数据的程序,就叫爬虫。它模拟浏览器发请求,拿回 HTML 源码,再从里面把想要的信息拎出来。对于刚接触的人来说,搞清楚这个流程基本就算入门了。
四步走完一趟
一个完整的爬虫跑下来,通常就这么几步:
- 发请求:构造 HTTP 请求(GET 或 POST),带上必要的 Headers,比如
User-Agent,免得被服务器一眼就认出来。 - 收响应:拿到服务器返回的原始数据,大多是 HTML,有时也是 JSON 或 XML。
- 解析数据:用正则或者像 BeautifulSoup 这样的解析库,把目标内容从源码里筛出来。
- 存结果:清洗完的数据,可以写到本地文件、塞进数据库,或者暂存在变量里。
步骤看着简单,但每一步都有小坑,后面写代码的时候我会顺带提一下。
先把环境搭起来
确保你装了 Python 3.x。然后装两个库:requests 负责网络请求,beautifulsoup4 专门解析 HTML。
pip install requests beautifulsoup4
网络不行的话,可以加个镜像源 -i https://pypi.tuna.tsinghua.edu.cn/simple。
上手写一个:抓 httpbin 测试页
拿 httpbin.org 的示例页面来练手,这是专门给人测试的接口,不涉及商业站点的法律风险。
import requests
from bs4 import BeautifulSoup
url = 'https://httpbin.org/html'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
try:
response = requests.get(url, headers=headers, timeout=10)
if response.status_code == 200:
response.encoding = response.apparent_encoding
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
title_tag = soup.find('h1')
if title_tag:
print(f"抓到的标题:{title_tag.get_text().strip()}")
else:
print("没找到 h1 标签")
else:
print(f"请求失败,状态码:")
Exception e:
()


