当前位置: 首页 > news >正文

python爬虫学习

前言

很多初学 Python 爬虫的小伙伴,刚入门就不知道从哪下手,分不清什么是爬虫协议、GET 和 POST 请求有什么区别,也不知道普通静态网页和动态 JS 网页该用什么工具爬取。

本文从零开始,一次性讲透robots.txt 规则、requests 库核心用法、get () 函数、Response 响应对象、post () 函数、Selenium 自动化爬虫六大核心知识点,适合小白入门学习,也可以作为爬虫基础笔记收藏。

一、爬虫必备:robots.txt 协议规则

1. 什么是 robots.txt

robots.txt是网站定义的爬虫准入协议文件,放在网站根目录下,用来告诉网络爬虫:哪些页面可以爬、哪些禁止爬

它不是强制性法律约束,是行业道德规范,正规爬虫都会遵守该规则,避免给服务器造成压力,也避免侵权违规。

2. 如何查看网站 robots.txt

格式:网站域名/robots.txt示例:

  • 百度:https://www.baidu.com/robots.txt
  • CSDN:https://blog.csdn.net/robots.txt

3. 常见 robots 规则语法

  1. User-agent: *代表对所有爬虫生效。
  2. Disallow: /禁止爬取网站所有目录
  3. Disallow: /admin/禁止爬取 admin 后台目录。
  4. Allow: /允许爬取所有目录。

4. 爬虫开发规范

  1. 爬取前先查看目标网站 robots.txt;
  2. 控制爬取频率,设置延时,不要高频疯狂请求;
  3. 不爬取隐私数据、付费内容、敏感信息;
  4. 合理设置请求头 User-Agent 伪装浏览器。

二、requests 库介绍与环境安装

1. 什么是 requests 库

requests是 Python 最流行的网络请求库,语法简洁、使用简单,用来模拟浏览器向服务器发送 HTTP 请求,获取网页源码、图片、接口数据等,是静态网页爬虫的首选。

2. 安装依赖库

打开命令提示符执行:

bash

运行

pip install requests

三、requests 库 get () 函数使用

1. get () 函数作用

get()GET 请求,属于最常用的请求方式,特点:

  • 参数直接拼接在 URL 后面;
  • 数据明文展示,长度有限;
  • 一般用于查询、获取数据(浏览网页、搜索、获取壁纸等)。

2. 基础语法

import requests # 发送GET请求 url = "目标网址" res = requests.get(url)

3. 带请求头伪装浏览器

不加请求头容易被网站识别为爬虫拦截,必须加User-Agent

import requests url = "https://www.baidu.com" headers = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } res = requests.get(url, headers=headers)

4. GET 带参数请求

适合分页、搜索传参:

import requests url = "https://www.gamewallpapers.com/index.php" headers = {"User-Agent":"Mozilla/5.0"} params = { "start":0, "page":1 } res = requests.get(url, headers=headers, params=params)

四、Response 响应对象详解

调用requests.get()/requests.post()后,返回的就是Response 对象,里面包含了服务器返回的所有信息。

常用属性与方法

import requests res = requests.get("https://www.baidu.com") # 1. 响应状态码 200正常 404页面不存在 500服务器错误 print(res.status_code) # 2. 网页源码字符串 print(res.text) # 3. 字节流数据(下载图片、视频、文件用) print(res.content) # 4. 请求的最终URL(防止重定向) print(res.url) # 5. 响应头信息 print(res.headers) # 6. 编码格式 print(res.encoding)

核心说明

  • res.text:文本形式,爬网页文字、html 源码;
  • res.content:二进制字节,下载图片、音频、视频必用;
  • 状态码 200 代表请求成功,其他状态码需做异常处理。

五、requests 库 post () 函数使用

1. post () 函数作用

post()POST 请求,特点和 GET 完全不同:

  • 参数放在请求体中,不暴露在 URL;
  • 无长度限制,安全性更高;
  • 常用于登录、注册、提交表单、上传数据

2. 基础语法

import requests url = "登录接口地址" headers = {"User-Agent":"Mozilla/5.0"} # 表单提交数据 data = { "username":"账号", "password":"密码" } # 发送POST请求 res = requests.post(url, headers=headers, data=data) print(res.text)

3. GET 和 POST 核心区别

表格

对比项GETPOST
参数位置URL 链接后请求体中
安全性低,明文可见高,隐藏参数
数据长度有限制无限制
用途查询、浏览、分页登录、提交表单、上传

六、Selenium 库爬虫使用教程

1. 为什么要用 Selenium

requests只能爬静态网页,对于JS 动态渲染、异步加载、需要登录下拉刷新的网页,直接请求拿不到真实源码。

Selenium 是自动化测试工具,可以模拟真实浏览器打开网页、加载 JS、点击、下拉、输入内容,完美爬取动态网页数据。

2. 安装依赖

pip install selenium

还需要下载对应浏览器驱动(ChromeDriver/EdgeDriver),和浏览器版本匹配。

3. Selenium 基础使用示例

from selenium import webdriver from time import sleep # 创建浏览器对象 driver = webdriver.Edge() # 打开指定网址 driver.get("https://www.baidu.com") # 等待加载 sleep(2) # 关闭浏览器 driver.quit()

4. 常用基础操作

  1. 打开网页:driver.get("url")
  2. 页面休眠:sleep(秒数)等待 JS 加载
  3. 获取网页源码:driver.page_source
  4. 关闭浏览器:driver.quit()
  5. 定位元素、输入内容、模拟点击(可实现自动登录、翻页爬取)

5. 适用场景

  • JS 动态加载的图片、数据;
  • 需要人机交互:登录、验证码、下拉刷新;
  • requests 无法直接获取源码的网站。

七、总结

  1. robots.txt是爬虫行业规范,爬取前遵守网站规则,控制爬取频率;
  2. requests 库是静态爬虫核心,掌握get()做数据查询、post()做表单提交;
  3. Response 对象重点掌握status_codetextcontent,分别用于状态判断、爬文字、下载文件;
  4. Selenium专门解决动态 JS 网页爬虫,模拟真实浏览器行为,弥补 requests 的不足。

掌握以上知识点,就已经具备 Python 爬虫的基础能力,可以自己练习爬取壁纸、小说、静态网页数据、动态网页信息等实战项目。

http://www.jsqmd.com/news/775000/

相关文章:

  • Windows系统shunimpl.dll文件丢失无法启动程序解决
  • 终极泰坦之旅装备管家:TQVaultAE让物品管理变得简单快速
  • argus:基于Rust的高性能系统调用追踪工具,替代strace的现代化选择
  • 从设备联网到空间感知:quoroom-ai/room开源框架构建智能空间的技术实践
  • Apple MLX框架下的脉冲神经网络(SNN)实现与优化
  • NCCL EP架构设计:MoE通信优化与GPU集群性能提升
  • 为什么选错机箱机柜厂家会拖慢项目进度?
  • HLS Downloader终极指南:三步掌握浏览器流媒体视频下载
  • ClipTalk:基于Go的抖音去水印与语音转文字工具部署指南
  • C语言基础-单链表
  • Conductor:基于确定性优先与Markdown的AI编码代理编排层实战指南
  • 书匠策AI:毕业论文的“智慧魔法棒”,解锁高效写作新姿势!
  • C#基础10
  • SD-PPP:打破Photoshop与AI绘图壁垒的专业级插件解决方案
  • Claude Code异步编程插件:基于钩子系统的事件驱动通知机制
  • 使用cutlass模板跑各种量化gemm的example
  • YOLOv11-seg 改进系列 | 引入原创 RSCD 重参数共享卷积分割头,增强 Head 表达力并压低计算量
  • 2026十大AIToken聚合平台深度解读,多模型聚合调用技术升级分析
  • 第五篇:MySQL锁机制——从行锁到间隙锁
  • ML Visuals:解锁机器学习可视化表达力的100+专业资源
  • 【学术生存指南2026】:错过AISMM,你的NSFC申报、顶会投稿与跨学科合作将系统性降维
  • 【EAI(企业应用集成)工具】Asteria warp簡単紹介(アステリア ワープ)
  • 用Python 和 java 写 10 道题
  • MCP协议赋能:Qdrant向量数据库的标准化AI应用集成实践
  • 基于PHP+Swoole与RAG的AI应用私有化部署全栈实战
  • 特斯拉Model 3/Y CAN总线数据采集终极指南:5分钟掌握车辆系统监控
  • uni-app 全能日历组件,支持农历、酒店预订、打卡签到、价格日历多种场景
  • 5分钟快速上手!Calibre豆瓣插件终极安装指南,轻松获取中文图书元数据
  • AI编程助手集成Codex CLI:MCP协议实现智能代码分析与本地模型部署
  • AI原生OPC项目路演实录分享