如何用BeautifulSoup4提取指定的CSRF Token?
提取HTML底部CSRF Token的最优方案
情况1:Token在隐藏<input>标签中
如果HTML底部的CSRF Token放在隐藏input里,比如:
直接用BeautifulSoup定位标签并提取value属性:
from bs4 import BeautifulSoup # html_content为获取到的完整HTML文本 soup = BeautifulSoup(html_content, 'html.parser') # 根据实际HTML的name/id属性调整定位条件 csrf_token = soup.find('input', {'name': 'csrf-token'})['value']
情况2:Token在页面底部的<script>标签中
如果Token以JS变量形式存在于底部script里,比如:
先定位script标签,再用正则匹配提取:
from bs4 import BeautifulSoup import re soup = BeautifulSoup(html_content, 'html.parser') # 取页面最后一个script标签(对应底部位置) script_tag = soup.find_all('script')[-1] # 根据实际变量名调整正则表达式 match = re.search(r'window\.CSRF_TOKEN\s*=\s*"([^"]+)"', script_tag.string) if match: csrf_token = match.group(1)
情况3:Token在普通文本容器中
如果Token直接放在底部的文本元素(如<div>/<p>)里,比如:
0HFqDSNx1c+1PUW36nrGLwuuVaYMDNWNa22trb7vXbIEGrFOizBtxVH/1z1UKG0DWMU9HcZOVHyTU//XVyLTpw==
直接提取元素文本内容:
from bs4 import BeautifulSoup soup = BeautifulSoup(html_content, 'html.parser') # 根据class/id定位容器,strip=True去除多余空格 csrf_token = soup.find('div', {'class': 'csrf-token'}).get_text(strip=True)
关键注意点
- 定位标签的属性(name/id/class)要和实际HTML完全匹配,注意大小写
- 若页面是JS动态渲染生成Token,BeautifulSoup无法直接提取,需用
selenium或playwright模拟浏览器加载后再处理 - 提取到的Token可直接放入登录请求的Headers或表单参数中提交
内容的提问来源于stack exchange,提问作者Ruibin Wu
相关产品推荐
相关产品推荐

