簡體   English   中英

Python Beautiful Soup-獲取輸入值

[英]Python Beautiful Soup - Getting input value

我的計划是能夠使用Bs4來獲取_AntiCsrfToken。

我有這個HTML,我的HTML來自 在此處輸入圖片說明

我在代碼中寫的是

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

但這給我一個錯誤

    Traceback (most recent call last):
  File "C:\Users\HelloWorld.py", line 67, in <module>
    print(soup.find('input', {'name':'_AntiCsrfToken'})['value'])
  File "C:\Python\lib\site-packages\bs4\element.py", line 1292, in find
    l = self.find_all(name, attrs, recursive, text, 1, **kwargs)
AttributeError: 'str' object has no attribute 'find_all'

我完全不知道我是否做對了。 我確實認為我做對了,但也許我需要在form-id之前找到它,而不是直接隱藏它?

我不確定錯誤在哪里,但是我已經制作了一個html文件並將其放在我的服務器上,復制和粘貼您的代碼沒有問題。

唯一明顯的區別(如果您尚未完成)是我使用請求將html解析為BS4

我認為這可能是一個解析問題。

HTML

<html>

<form action="process">
<input type="hidden" name="_AntiCsrfToken" value="5435434354353453545">

</form>
</html>

蟒蛇:

from bs4 import BeautifulSoup as bs4
import requests

r = requests.get('http://maffaz.com/so.html')
html_bytes = r.text
soup = bs4(html_bytes, 'lxml')
token = soup.find('input', {'name':'_AntiCsrfToken'})['value']
print(token)

收益:

5435434354353453545

你也不需要

{'name':'_AntiCsrfToken'}

所以:

token = soup.find('input')['value']

將工作

也許嘗試使用CSS選擇器

from bs4 import BeautifulSoup

html = """
<html>
<input type="hidden" name="_AntiCsrfToken" value="5435434354353453545">
</html>
"""

soup = BeautifulSoup(html, 'lxml')
csrf = soup.select_one('input[name=_AntiCsrfToken]')['value']
print(csrf)

輸出: 5435434354353453545

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM