早上好,親愛的 SO 社區(qū)。我最近在嘗試解析 HTML 時遇到了一個小問題。我總是使用 bs4 模塊,直到現(xiàn)在這一直很好。我在抓取時主要需要隱藏的輸入,如果我按名稱搜索它們,可以很容易地找到值。但是現(xiàn)在我找到了一個頁面,其中輸入也有一個 id,如下所示:<input type="hidden" value="985207" name="order[ship_address_attributes] [id]" id="order_ship_address_attributes_id">我想找到價值,如果其余的都是已知的。我嘗試通過只留下 id 部分并僅使用名稱搜索它來嘗試它,就像我習慣的那樣,但這并不順利,我沒有找到值。我的代碼:soup=bs(r.text, 'lxml')vle=soup.find('input',{'name':'ship_address_attributes'})['value']我希望找到一種方法來獲得價值,與我嘗試的方式類似。有沒有一種方法可以像名稱一樣添加 id?我會很高興得到任何幫助。非常感謝,并祝全社會節(jié)日快樂。
2 回答

臨摹微笑
TA貢獻1982條經(jīng)驗 獲得超2個贊
您可以使用regexwithBeautifulSoup來查找正確的標簽。
例如:
import re
from bs4 import BeautifulSoup as bs
a = '''<input type="hidden" value="985207" name="order[ship_address_attributes]
[id]" id="order_ship_address_attributes_id">'''
# Or:
# soup = bs(a, 'lxml')
soup = bs(a, 'html.parser')
data = soup.find('input', {'name': re.compile(r'order\[\w+\]\s+\[\w+\]')})
print(data['value']) # 985207
或者,如果您想找到完全regex匹配的標簽,您可以執(zhí)行以下操作:
data = soup.find('input', {'name': re.compile(r'order\[ship_address_attributes\]\s+\[id\]')})
print(data['value']) # 985207
添加回答
舉報
0/150
提交
取消