前言

很多初学 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 核心区别

表格

对比项 GET POST
参数位置 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 爬虫的基础能力,可以自己练习爬取壁纸、小说、静态网页数据、动态网页信息等实战项目。

更多推荐