2014-10-08 60 views
0

的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' 

有什麼想法?

回答

1

這是從給定輸入提取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沒有設置或其他類型的(即不是一個字符串)?

+0

gaaah ..就是這樣。我在做BeautifulSoup(r)而不是BeautifulSoup(r.text) – 2014-10-08 21:37:47

+0

這是一個容易犯的錯誤,很高興你把它整理出來:) – HAL 2014-10-08 21:39:11