首页 >> 日常问答 >

问python 简单的爬虫教程 入门实战讲解

2026-11-11 07:47:05

答

Python 简单的爬虫教程核心是使用 requests 库请求网页,再配合 BeautifulSoup 解析网页里面的目标数据,这套组合是新手最容易上手的爬虫方案,之所以选择这个组合,是因为 requests 负责模拟浏览器发送网络请求,拿到网页源码,BeautifulSoup 可以把杂乱的 html 代码转换成结构化对象,不用手动写复杂正则匹配,学习这套教程的时候,需要先准备 Python 环境,安装对应的第三方库,然后理解请求响应网页解析数据保存完整流程,同时必须牢记爬虫要遵守网站 robots 协议,不能高频请求给服务器造成压力,也不能抓取受法律保护的隐私和版权内容,完成基础示例之后,还可以学习请求头设置延时异常处理,解决大部分新手遇到的访问失败问题,这套基础爬虫可以用来练习静态网页数据采集,适合零基础熟悉爬虫完整工作链路。

前期准备工作

1 确认 Python 环境

电脑已经安装 Python,打开命令行,输入 python --version 可以查看版本,推荐使用 Python3 版本,现在主流爬虫库都不再兼容 Python2。

2 安装依赖库

打开命令行执行安装命令

pip install requests beautifulsoup4

requests 用来发送 http 请求,beautifulsoup4 就是 BS4 解析库。

3 基础原理认知

静态网页爬虫的逻辑,浏览器访问网站本质是发送 http 请求,服务器返回 html 源码,爬虫就是用代码模拟这个请求,拿到源码之后提取文字标题链接图片地址这类想要的数据,如果网页是 js 动态渲染的数据,这套基础方案就拿不到内容,需要后续学习 selenium 这类工具。

完整基础代码步骤

第一步 导入库

import requests

from bs4 import BeautifulSoup

第二步 设置请求头

headers = {"User-Agent": "Mozilla/5.0"}

设置 User-Agent 是为了伪装成浏览器,很多网站会拦截没有浏览器标识的爬虫请求,直接返回 403 禁止访问。

第三步 发送 get 请求

url = "这里填写目标静态网页地址"

response = requests.get (url, headers=headers)

response.raise_for_status ()

raise_for_status 可以判断请求状态码,如果是 404 500 这类错误会直接抛出异常,方便排查。

第四步 解析网页源码

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

html.parser 是内置解析器,不需要额外安装。

第五步 提取目标元素

比如查找所有 a 标签

items = soup.find_all ("a")

循环遍历,提取标签里面的文字和 href 链接

for item in items:

print (item.get_text ())

print (item.get ("href"))

第六步 数据保存

可以把提取的数据写入 txt 或者 csv 文件,使用 open 函数打开文件,循环写入每一条数据。

核心知识点分层说明

请求相关要点

get 请求适合普通网页访问,如果网站需要提交表单数据,可以改用 post 请求,requests.post 可以携带 data 参数。

状态码含义,200 代表请求成功,403 代表拒绝访问,一般是请求头缺失或者 IP 被封禁,404 代表页面地址错误,500 代表服务器内部错误。

解析相关要点

find 方法只查找第一个匹配元素,find_all 查找全部匹配元素,还可以增加 class id 属性筛选,例如 soup.find_all ("div", class_="item")。

get_text 方法提取标签内纯文本,get 方法获取标签属性,比如 href src 属性。

基础防护与优化

加入 time.sleep 延时,每次请求间隔 1 到 3 秒,降低请求频率,避免触发网站反爬。

增加异常捕获 try except,捕获网络超时连接失败,防止程序直接崩溃。

基础爬虫相关对照表

模块作用适用场景
requests发送网络请求获取网页源码静态网页 get post 请求
BeautifulSouphtml 标签解析提取数据结构化 html 页面数据提取
time设置请求延时规避高频请求反爬
csv数据导出保存把采集结果保存成表格文件

进阶拓展说明

本教程属于静态网页爬虫,如果目标网站的数据是 JavaScript 动态加载,打开网页源码看不到目标数据,基础 requests 加 BS4 就失效,后续可以学习 selenium playwright 模拟浏览器渲染页面,还可以了解 cookie 代理 ip 反爬应对,但是所有拓展都需要建立在合规采集的前提之上。

【常见问题】

问题 1 python 简单的爬虫教程里面为什么要设置请求头

回答 1 python 简单的爬虫教程中设置请求头是为了伪装浏览器身份,很多网站会拦截默认爬虫标识,不设置请求头容易出现 403 禁止访问。

问题 2 python 简单的爬虫教程为什么拿不到网页里面的数据

回答 2 python 简单的爬虫教程基础方案只适合静态网页,如果数据是 js 动态渲染,源码里不存在目标内容,就无法提取,需要更换浏览器渲染类爬虫方案。

问题 3 python 简单的爬虫教程运行报错 403 是什么原因

回答 3 python 简单的爬虫教程中 403 一般是网站识别出爬虫,可能缺少 User-Agent 请求头,或者请求频率太高被网站临时封禁 IP。

问题 4 python 简单的爬虫教程采集数据可以随意抓取吗

回答 4 python 简单的爬虫教程明确要求遵守网站 robots 协议和相关法律法规,不能抓取隐私版权受限内容,不能高频请求影响网站正常运行。

【免责申明】

本文内容仅用于 Python 简单的爬虫教程技术学习演示,代码仅作为教学示例,使用爬虫采集数据必须严格遵守网站规则以及国家相关法律法规,因违规采集造成的法律责任由使用者自行承担,本文不鼓励任何非法爬取行为。

 

相关阅读

最新文章