如何用Python编程实现一个简单的Web爬虫?

⚠️重要提醒

  1. 爬虫务必遵守网站 robots.txt 协议,不要高频疯狂请求,避免给服务器造成压力;

  2. 禁止爬取隐私、付费、受版权保护的数据;

  3. 很多现代网页是JS动态渲染, requests 拿不到内容,需要用Selenium/Playwright;

  4. 学习用途,不要用于商用。

准备库

  • requests :发送HTTP请求获取网页源码

  • BeautifulSoup4 :解析HTML提取数据

bash

pip install requests beautifulsoup4

示例1:静态网页简单爬虫(获取网页标题、链接)

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")

获取网页标题

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

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

提取页面所有超链接

links = soup.find_all("a")

for a_tag in links:10: #只打印前10条

link_text = a_tag.get_text(strip=True)

href = a_tag.get("href")

if href:

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

except Exception as e:

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

if name == "main":

target_url = "https://example.com" # 测试网站example.com

simple_crawler(target_url)

核心知识点说明

  1. User‑Agent:伪装成浏览器,部分网站会拒绝没有UA的程序访问;

  2. requests.get() 获取页面HTML源代码;

  3. BeautifulSoup(html,"html.parser") 解析网页;

  • .find("标签名") 获取第一个匹配标签

  • .find_all("标签名") 获取全部匹配标签

  • .get_text() 获取标签内文字

  • .get("属性名") 获取标签属性(href、src)

示例2:把爬取的数据保存到本地txt

python

在上面代码基础上增加保存逻辑

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

f.write(title + "\n")

for a_tag in links:

txt = a_tag.get_text(strip=True)

h = a_tag.get("href")

f.write(f"{txt} | {h}\n")

常见问题

  1. 返回乱码:设置 resp.encoding = resp.apparent_encoding

  2. 403禁止访问:缺少请求头headers,网站识别出爬虫;

  3. 拿不到网页内容:网页是JS动态加载,requests只能拿到初始HTML → 使用Selenium;

  4. 请求太快被封IP:导入 time 模块,每次请求后 time.sleep(1~3) 延时。

Selenium简易动态网页爬虫(可选扩展)

如果页面是js渲染,requests拿不到数据,需要selenium驱动真实浏览器。

bash

pip install selenium

爬虫道德与法律

  • 控制访问频率,增加 sleep() 延时;

  • 不爬取登录后才可见的内容;

  • 不破解反爬、不批量骚扰服务器。

相关推荐
vx_Biye_Design6 分钟前
django房屋租赁推荐系统78455-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·express
北京中科新远科技7 分钟前
兼容光模块上线前怎么测:识别、DOM、误码与批次回归清单
人工智能·数据挖掘·回归
RockHopper20259 分钟前
统一目的的分布式智能体 vs 多个独立应用智能体的集成
人工智能·系统架构·智能体·agent 工程
桃西西呀15 分钟前
饭桌上又卡壳了?我用 TRAE 写了个嘴替鸭,把回话提前备好
人工智能·llm·ai编程
袋鼠云数栈15 分钟前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
kyriewen20 分钟前
我让 AI 当候选人面了一轮:居然一个问题都没问倒它
人工智能·程序员·ai编程
月与清酒27 分钟前
2026年10月AI大模型全景对比:GPT-6、Claude 5.5、Gemini 4、DeepSeek V4.1到底差在哪
人工智能·gpt·ai
来自于狂人34 分钟前
AI前沿速递|AI自己“进化“操作界面干翻GPT-5.5!8B“流体模型“提速2.54倍,清华让Agent学会“收拾记忆“成本直降28%
人工智能·gpt
科技看点说1 小时前
AI画面不廉价:质感的三层来源详解
人工智能
秦先生在广东1 小时前
Agentic Awesome Skills 解析:构建本地优先的 Agent 技能控制平面
人工智能