2026年7月23日星期四

今天是我学习的第九天,学习了python爬虫基础。昨天没有更新是在整理和复习之前学过的python基础,和题目练习。

1.requests

requests 是 Python 爬虫、接口开发最核心、最常用的库,语法简单、功能强大,完全替代老旧的 urllib。

安装 requests   安装命令:

pip install requests

 1)、GET 请求(查询数据、获取网页)

适用场景:打开网页、搜索、获取公开数据

参数使用 params 自动拼接 URL,无需手动拼接 、

2)、POST 请求(提交数据、登录、接口查询)

适用场景:提交表单、翻译、登录、上传数据

表单参数用 data,JSON参数用 json

3)、 response 响应对象
response.status_code # 状态码 200成功 response.text # 网页文本字符串(解析HTML、JSON) response.content # 二进制字节(下载图片、视频、文件) response.encoding # 手动设置编码,解决乱码 response.json() # 直接解析接口json数据

乱码解决固定写法

response.encoding = "utf-8"

4)、请求头 Headers 与反爬原理

 为什么必须加 User-Agent?

requests 默认 UA:python-requests/2.31.0

网站一眼识别为爬虫 → 拦截、返回空页面、封IP。

User-Agent 作用:伪装成真实浏览器,绕过基础反爬

通用万能 UA(永久可用)

headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36" }

5)、代理 IP proxies(保护本机IP)

 代理作用

  • 高频爬取不会封本机真实IP

  • 网站记录的是代理IP,隐藏本机地址

带账号密码代理格式

proxies = { "https": "http://用户名:密码@IP:端口" }

6)、超时设置 + 异常捕获(防止程序崩溃)

 timeout 超时

timeout=8:8秒无响应直接报错,避免程序卡死

7.)、requests + 正则 提取网页数据

必须导入正则模块

import re

正则爬虫核心语法

  • re.compile():预编译正则,效率更高

  • re.S:让 . 匹配换行(爬虫必备)

  • .*?:非贪婪匹配,精准抓取内容

  • (?P<name>):命名分组,精准提取指定内容

requests 爬虫核心三板斧:

  1. 伪装请求头(绕过基础反爬)

  2. 代理 + 超时 + 异常捕获(保证程序稳定)

  3. 正则/json/xpath解析数据(提取目标内容)

2.Xpath

XPath 全称XML 路径语言,原本用来查找 XML 节点,HTML 属于类 XML 结构,因此爬虫中用来精准定位、提取网页标签内文本、属性值。

依赖库:lxml,解析 HTML 文档。

安装命令:pip install lxml

导入写法:from lxml import etree

基础使用流程(搭配 requests)
  1. requests 获取网页源码字符串
  2. etree.HTML () 将字符串转为 可被 XPath 解析的 HTML 对象
  3. 使用 xpath("表达式") 提取数据

核心语法:

表达式含义说明
/从根节点开始匹配,绝对路径
//全局搜索,匹配页面中所有符合标签(最常用)
.当前节点
@属性名提取标签的属性值,例:@src、@href、@class
text()提取标签内部的文本内容
[]筛选条件,限定标签属性、下标

绝对路径 /html/body/div [2]/ul/li:层级写死,页面标签顺序改动就失效,几乎不用

相对路径 //ul//li:全局检索目标标签,层级变化不影响匹配,爬虫标准写法

返回值特点

xpath() 方法永远返回列表:

匹配到多条数据:["内容1","内容2"]

只匹配一条数据:["内容"]

无匹配内容:[]

空列表如需取出单独值,使用下标取值:res = html.xpath("//title/text()")[0]

更多推荐