用 Python 配置网页爬取:从安装到抓取第一条数据

网页爬取配置的关键是装好请求和解析两个库,并给请求加上合理的请求头与超时。
下面用 Python 的 requests 和 BeautifulSoup 走一遍从环境准备到抓取第一条数据的完整过程,适合零基础用户照着操作。

环境准备与依赖安装

先确认本机已安装 Python 3.8 及以上版本,在终端执行 python --version 能显示版本号即可。
然后创建虚拟环境,避免污染系统环境:

python -m venv crawler-env
source crawler-env/bin/activate  # Windows 用 crawler-env\Scripts\activate
pip install requests beautifulsoup4

安装完成后用 pip list 检查 requests 和 beautifulsoup4 是否出现在列表中。
如果下载慢,可以临时指定国内镜像源,例如 pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple。

编写第一个抓取脚本

新建文件 first_crawl.py,写入下面代码。
它请求一个页面,检查状态码,再用 BeautifulSoup 提取标题和所有链接:

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}

try:
    resp = requests.get(url, headers=headers, timeout=10)
    resp.raise_for_status()
    resp.encoding = resp.apparent_encoding
    soup = BeautifulSoup(resp.text, "html.parser")
    print("标题:", soup.title.string if soup.title else "无标题")
    for a in soup.find_all("a", href=True)[:5]:
        print(a["href"], a.get_text(strip=True))
    with open("page.html", "w", encoding="utf-8") as f:
        f.write(resp.text)
except requests.exceptions.Timeout:
    print("请求超时,检查网络或调大 timeout")
except requests.exceptions.HTTPError as e:
    print("HTTP 错误:", e.response.status_code)
except requests.exceptions.RequestException as e:
    print("请求失败:", e)

运行 python first_crawl.py,如果终端打印出页面标题和链接,说明请求和解析都正常。
把 url 换成你要抓的页面即可开始测试。

配置项与避坑要点

请求头里的 User-Agent 是最容易被忽略的一项。
很多网站会拦截没有浏览器标识的请求,返回 403 或空内容。
建议至少带上常见的浏览器 UA,不要用默认的 python-requests。

超时 timeout 必须显式设置,否则网络异常时程序可能长时间挂起。
一般设 10 到 15 秒,批量抓取时配合 try/except 逐条处理,避免一个失败中断全部任务。

编码问题也常见。resp.text 默认按响应头猜测编码,中文页面可能乱码。
用 resp.apparent_encoding 或手动指定 resp.encoding = "utf-8" 可以修正。

如果目标页面需要登录或频繁请求,不要强行绕过限制。
先查看网站的 robots.txt 和使用条款,控制请求频率,必要时在请求间加 time.sleep(1) 降低压力。

验证抓取结果

脚本运行后检查三件事:状态码是否为 200、保存的 page.html 能否用浏览器正常打开、提取的标题和链接是否与页面一致。
若状态码 403,优先更换 User-Agent 并确认是否被频率限制;
若返回内容为空,检查页面是否由 JavaScript 动态渲染,这类页面需要改用浏览器自动化工具,而不是继续调 requests 参数。

常见疑问

抓取时提示 SSLError 怎么办?
先确认系统证书是否正常,不要直接加 verify=False 跳过验证,那会降低安全性。可以升级 certifi 或检查代理设置。

为什么抓到的中文是乱码?
多数是编码判断错误,按上文设置 resp.encoding 后再解析即可。

能不能不加延时连续抓取?
不建议。高频请求既可能触发封禁,也会给对方服务器造成压力,按站点规则控制频率更稳妥。

网页爬取配置并不复杂,装好依赖、带上请求头、设好超时,再根据返回结果调整解析规则,就能稳定拿到第一条数据。
后续扩大抓取范围时,优先复查频率控制和编码处理,比堆砌功能更重要。

分享到:
上一篇
用 Python 解析 PPT 文件:python-pptx 环境配置与文本提取实操
下一篇
AI数据泄露防护要盯住哪些环节,训练和推理阶段各有什么风险
1
系统公告

关于香港云优质服务器IP地址更换的通知

尊敬的客户: 因原IP运营商大幅涨价,为避免成本转嫁至用户,我司决定更换IP服务商。本次更换后,您的续费价格将保持不变,且新IP网络质量与服务标准不受影响。新IP已分配至后台,即刻生效(更换的新IP都是香港原生IPv4)。 涉及 IP 段: 45.192.x.x 旧 IP 停用时间: 2026 年 12 月 1 日
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意