al+大数据每日学习笔记9
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 爬虫核心三板斧:
-
伪装请求头(绕过基础反爬)
-
代理 + 超时 + 异常捕获(保证程序稳定)
-
正则/json/xpath解析数据(提取目标内容)
2.Xpath
XPath 全称XML 路径语言,原本用来查找 XML 节点,HTML 属于类 XML 结构,因此爬虫中用来精准定位、提取网页标签内文本、属性值。
依赖库:lxml,解析 HTML 文档。
安装命令:pip install lxml
导入写法:from lxml import etree
基础使用流程(搭配 requests)
- requests 获取网页源码字符串
- etree.HTML () 将字符串转为 可被 XPath 解析的 HTML 对象
- 使用
xpath("表达式")提取数据
核心语法:
| 表达式 | 含义说明 |
|---|---|
/ | 从根节点开始匹配,绝对路径 |
// | 全局搜索,匹配页面中所有符合标签(最常用) |
. | 当前节点 |
@属性名 | 提取标签的属性值,例:@src、@href、@class |
text() | 提取标签内部的文本内容 |
[] | 筛选条件,限定标签属性、下标 |
绝对路径 /html/body/div [2]/ul/li:层级写死,页面标签顺序改动就失效,几乎不用
相对路径 //ul//li:全局检索目标标签,层级变化不影响匹配,爬虫标准写法
返回值特点
xpath() 方法永远返回列表:
匹配到多条数据:["内容1","内容2"]
只匹配一条数据:["内容"]
无匹配内容:[]
空列表如需取出单独值,使用下标取值:res = html.xpath("//title/text()")[0]
更多推荐

所有评论(0)