使用 Beautifulsoup 在 html 页面中查找 CSRF 令牌

Mor*_*len 2 python beautifulsoup

HTML 看起来像这样

<input type="hidden" name="csrfToken" value="ajax:SOME_TOKEN"/>
Run Code Online (Sandbox Code Playgroud)

我尝试了几种不同的方法,但总是出现错误。我认为这种方式看起来是正确的,但显然不是。

soup = BeautifulSoup(html_page)
soup.find('input', {'name':'csrfToken'})
Run Code Online (Sandbox Code Playgroud)

我不断得到:

TypeError: 'expected string or buffer'
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

小智 5

这是从给定输入中提取 CSRF 令牌的一种方法:

from bs4 import BeautifulSoup

html = '<input type="hidden" name="csrfToken" value="ajax:SOME_TOKEN"/>'
soup = BeautifulSoup(html)

token = soup.find('input', {'name':'csrfToken'})['value']

print token
Run Code Online (Sandbox Code Playgroud)

运行此命令的结果是:

ajax:SOME_TOKEN
Run Code Online (Sandbox Code Playgroud)

通过查看您的示例,html 元素的实际提取似乎是正确的。可能是你的html_page未设置或其他类型(即不是字符串)?