我正在尝试提取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无法下标”。基本上没有找到它。 有什么线索吗? 非常感谢。
答案 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=