发现使用Beautifulsoup
问题描述:
的HTML页面内的CSRF令牌的HTML看起来像这样发现使用Beautifulsoup
<input type="hidden" name="csrfToken" value="ajax:SOME_TOKEN"/>
我已经试过这几种不同的方式,但我不断收到一个错误。我认为这种方式看起来不错,但显然不是。
soup = BeautifulSoup(html_page)
soup.find('input', {'name':'csrfToken'})
我不断收到:
TypeError: 'expected string or buffer'
有什么想法?
答
这是从给定输入提取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
运行这样的结果是:
ajax:SOME_TOKEN
通过看你的榜样,对实际提取html元素似乎是正确的。难道你的html_page
没有设置或其他类型的(即不是一个字符串)?
gaaah ..就是这样。我在做BeautifulSoup(r)而不是BeautifulSoup(r.text) – 2014-10-08 21:37:47
这是一个容易犯的错误,很高兴你把它整理出来:) – HAL 2014-10-08 21:39:11