Python简单网络爬虫教程

⚠️重要提醒:爬虫请遵守网站 robots.txt 协议,不要高频爬取,禁止爬取隐私、付费、受版权保护内容,部分网站严禁爬虫,违规会有法律风险。

环境准备

需要安装两个第三方库

bash

pip install requests beautifulsoup4

  • requests :用于发送http请求,获取网页源码

  • BeautifulSoup :解析html网页,提取数据

完整示例:静态网页爬虫

python

import requests

from bs4 import BeautifulSoup

def simple_crawler(url):

请求头,模拟浏览器访问,防止被反爬拦截

headers = {

"User‑Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"

}

try:

发送GET请求

resp = requests.get(url, headers=headers, timeout=10)

resp.raise_for_status() # 如果状态码不是200,抛出异常

resp.encoding = resp.apparent_encoding # 自动识别编码

解析网页

soup = BeautifulSoup(resp.text, "html.parser")

示例1:获取网页标题

title = soup.find("title").get_text()

print("网页标题:", title)

示例2:提取页面所有a标签(超链接)

all_links = soup.find_all("a")

print("\n页面内链接:")

for link in all_links:10: #只打印前10条

text = link.get_text(strip=True)

href = link.get("href")

if href:

print(f"文本:{text} 链接:{href}")

except requests.exceptions.RequestException as e:

print("请求出错:", e)

if name == "main":

target_url = "https://example.com" #测试网页,可替换为合法目标站点

simple_crawler(target_url)

核心知识点

  1. User‑Agent 请求头

网站会识别客户端,不加UA会被识别为爬虫直接拒绝访问,所以必须带上浏览器UA。

  1. 常见状态码
  • 200 :访问成功

  • 403 :服务器拒绝访问,反爬拦截

  • 404 :页面不存在

  • 521 :网站WAF防火墙拦截爬虫,需要处理指纹、cookie

  1. 解析数据常用方法

python

soup.find("标签名") # 查找第一个匹配标签

soup.find_all("标签名") # 查找全部匹配标签

tag.get_text() # 获取标签内文字

tag.get("属性名") # 获取标签属性,比如href、src

进阶场景

  1. 网页是JS动态渲染(requests拿不到数据)

requests只能拿原始HTML,JS加载出来的数据需要:

  • 方案1:调用网站公开API接口(优先)

  • 方案2:使用 Selenium / Playwright 模拟真实浏览器

  1. 保存爬取结果

python

将结果写入txt

with open("result.txt","w",encoding="utf‑8") as f:

f.write(resp.text)

爬虫避坑

  1. 设置 timeout 超时时间,防止程序卡死

  2. 请求之间加延时 time.sleep(1‑3) ,不要疯狂请求服务器

  3. 不要爬登录后才能看到的内容,未授权抓取属于侵权

  4. 遇到验证码、cloudflare防护,简单requests无法解决。

相关推荐
aa小小7 分钟前
从0到1:Windows 本地部署 Qwen3 + Flask 接口(RAG 学习路线第1周踩坑实录)
python
镜子AI7 分钟前
镜子AI工程实践:用熵权法 + TOPSIS 做多方案选型排序(零依赖 Python)
开发语言·人工智能·python
估值探索者8 分钟前
【Python量化组合管理实战 02】钱该怎么分?等权、波动率倒数与动态评分三种配权实测
java·开发语言·python·接口·股票数据api接口
西索斯coding19 分钟前
Kimi K2.6 与 Qwen3.7 Max:跨文件修复评测与成本核算方法(2026)
开发语言·python·ai
梯度下降者21 分钟前
桌面应用自动化python——uiautomation API 如何找元素
python·自动化·窗口操作·uiautomation·控件识别
wuyk55522 分钟前
PyQt6-第10讲-PDF工具箱
python·microsoft·pdf·pyqt
知识分享小能手39 分钟前
机器学习教程,从入门到精通,机器学习概述 + Python 语言基础 · 知识点详解(1)
人工智能·python·机器学习
郝学胜-神的一滴1 小时前
AI 编程智能体 16:从零基础搭建到精细化优化
人工智能·python·算法·语言模型·langchain·pip
又蓝1 小时前
【元宝搜索开发者征文大赛】用 FastAPI + Vue3 做了个 AI 炒股工具,接了六个分析师和腾讯元宝搜索
人工智能·python·ai·fastapi
2601_966949651 小时前
为什么不应该把 QuantDash API Key 直接写进公开代码仓库?从 Git 提交历史理解凭证泄露风险
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash