使用bs4从HTML提取特定值

时间:2019-04-07 19:09:01

标签: python parsing beautifulsoup

我正在尝试提取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    

我想要名称为secret

的值

我试图这样解决:

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

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

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

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

1 个答案:

答案 0 :(得分:1)

使用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=