我正在尝试提取HTML标记的值。在对网站发出发布请求后,HTML会在网站的响应中返回。

我要解析的HTML代码段如下所示:

<input name=\"secret\" type=\"hidden\" value=\"eyJ0aW1lc3RhbXAiOjE1NTQ2NjIyMzksImFjdGlvbiI6IlwvY2FydFwvcGx1c1wvMWNlNzUtMTEzNzYzIn0=\">\n    <input name=\"product_id\" type=\"hidden\" value=\"156863\">\n    <input name=\"product_bs_id\"  type=\"hidden\" value=\"113763\">\n    <input type=\"hidden\" name=\"amount\" type=\"text\" value=\"1\">\n


我想要带有秘密名称的值

我试图像这样解决它:

soup=bs(req.text, 'lxml')
secret=soup.find('input',{'name':'secret'})['value']


由于这些反斜杠,我也这样尝试:

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

但我仍然总是收到错误“ NoneType无法下标”。基本上没有找到它。
有什么线索吗?
非常感谢。

最佳答案

使用CSS选择器检索值。

from bs4 import BeautifulSoup as bs

html='''<input name=\"secret\" type=\"hidden\" value=\"eyJ0aW1lc3RhbXAiOjE1NTQ2NjIyMzksImFjdGlvbiI6IlwvY2FydFwvcGx1c1wvMWNlNzUtMTEzNzYzIn0=\">\n
<input name=\"product_id\" type=\"hidden\" value=\"156863\">\n
<input name=\"product_bs_id\"  type=\"hidden\" value=\"113763\">\n
<input type=\"hidden\" name=\"amount\" type=\"text\" value=\"1\">\n    '''

soup=bs(html, 'lxml')
secret=soup.select_one('input[name^=\\secret]')
print(secret['value'])


输出:

eyJ0aW1lc3RhbXAiOjE1NTQ2NjIyMzksImFjdGlvbiI6IlwvY2FydFwvcGx1c1wvMWNlNzUtMTEzNzYzIn0=

关于python - 使用bs4从HTML提取特定值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55562661/

10-11 22:22
查看更多