You need to enable JavaScript to run this app. 使用Python与b4s爬取_AntiCsrfToken值,解决返回空数组问题
优惠活动
大模型
产品
解决方案
定价
更多

使用Python与b4s爬取_AntiCsrfToken值,解决返回空数组问题

提取表单中 _AntiCsrfToken 取值的可行方案

bs4 解析返回空数组的常见原因

  • 未对转义HTML做解码:如果传入的HTML片段包含</"这类转义实体,直接丢给bs4时,解析器会将整段内容识别为普通文本,完全匹配不到任何HTML标签,就会返回空结果。
  • 解析器依赖缺失:使用lxml这类需要额外安装的解析器,但本地未安装对应依赖,会导致标签识别异常。
  • 选择器匹配错误:比如将_AntiCsrfToken的属性名拼写错误,或者嵌套了过深的选择器层级,缩小了匹配范围。

极简实现代码

整个实现仅需几步,不需要额外依赖即可完成目标:

from bs4 import BeautifulSoup
import html

# 替换为你实际拿到的带转义的原始HTML字符串
raw_escaped_html = '''<form method="post" class="newsletter-form  js-newsletter-form" action="/en/customer/subscribablesignup" data-success-message="Thank you for signing up!">
    <input type="hidden" name="_AntiCsrfToken" value="bccfe8ae52e74d85bb26851bed7ebbbb">
    <input name="id" type="hidden" value="2">
    <input name="redirectUrl" type="hidden" value="/">
    <p id="newsletter-desc-footer" class="newsletter-form__desc">
        Sign up for email updates and promotions.
    </p>'''

# 1. 解码转义实体,还原为标准HTML结构
# 2. 使用Python内置的html.parser解析器,无需额外安装依赖
soup = BeautifulSoup(html.unescape(raw_escaped_html), "html.parser")
# 3. 按name属性精准匹配目标input标签,提取value值
csrf_token = soup.find("input", attrs={"name": "_AntiCsrfToken"})["value"]

print(csrf_token)

运行代码可直接输出目标值:bccfe8ae52e74d85bb26851bed7ebbbb,不会出现空数组返回的问题。

内容的提问来源于stack exchange,提问作者Movie Clips

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.31 04:24:03