Python美丽的汤-获取输入值

Python美丽的汤-获取输入值,python,bs4,Python,Bs4,我的计划是通过使用Bs4来抓取反垃圾邮件 我的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

我的计划是通过使用Bs4来抓取反垃圾邮件

我的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'
回溯(最近一次呼叫最后一次):
文件“C:\Users\HelloWorld.py”,第67行,在
打印(soup.find('input',{'name':''u antisrftoken'})['value'])
文件“C:\Python\lib\site packages\bs4\element.py”,第1292行,在find中
l=self.find_all(名称、属性、递归、文本、1、**kwargs)
AttributeError:“str”对象没有“find_all”属性

我不知道我做得对不对。我确实认为我做得对,但也许我需要从表单id中找到它,而不是直接进入隐藏

我不确定你的错误在哪里,但我已经制作了一个小html文件并将其放在我的服务器上,复制和粘贴你的代码没有问题

唯一明显的区别(如果您没有这样做的话)是我使用请求将html解析为BS4

我想这可能是一个解析问题

HTML

返回:

5435434354353453545
你也不需要

{'name':'_AntiCsrfToken'}
因此:

是否有效

或者尝试使用

从bs4导入美化组
html=”“”
"""
soup=BeautifulSoup(html,“lxml”)
csrf=soup。选择一个('input[name=\u antisrftoken]')['value']
打印(csrf)

输出:
5435435353455

看起来您在
soup
上使用了一个方法,然后调用
self.find__all
,但声称
self
是一个非常不同寻常的字符串,您是否尝试过将bs4更新到最新版本?嗯,我不知道是否可以更新,但我已经完成了
pip安装beautifulsoup4
,但它说我已经安装了它,所以我假设我有最新版本。我几天前也安装了它。尽管它会提示如果它检测到可用的更新,请尝试。我会看一看源代码,看看我是否能弄清楚到底发生了什么。它已经是最新版本了。我本来可以给你源代码的,但我不知道在哪里分享,因为它有点长。有什么建议吗@Tadhgcdonald JensenI的意思是查看
bs4.element
第1292行,但
self
不可能意外成为
str
。你能用汤吗?找到所有的汤吗?你能发布一个吗?我已经有了最新的版本,我仍然有同样的问题。你能发布更多的代码吗。此处为MCVE或github/pastebin上的完整代码。。最好是MCVE
5435434354353453545
{'name':'_AntiCsrfToken'}
token = soup.find('input')['value']
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)