[英]python - Parse specific value in an HTML
晚上好,親愛的社區。 我今晚的問題如下:我有這段HTML:
<option class="disabled" value="12_654" >
(EU 38 2/3 - US 6) </option>
<option class="disabled" value="12_3716" >
(EU 39 1/3 - US 6,5) </option>
<option class="disabled" value="12_636" >
(EU 40 - US 7) </option>
<option class="" value="12_634" >
EU 40 2/3 - US 7,5 </option>
<option class="" value="12_462" >
EU 41 1/3 - US 8 </option>
<option class="" value="12_460" >
EU 42 - US 8,5 </option>
<option class="" value="12_459" >
EU 42 2/3 - US 9 </option>
<option class="" value="12_458" >
EU 43 1/3 - US 9,5 </option>
<option class="" value="12_457" >
EU 44 - US 10 </option>
<option class="" value="12_456" >
EU 44 2/3 - US 10,5 </option>
<option class="" value="12_455" >
EU 45 1/3 - US 11 </option>
<option class="disabled" value="12_559" >
(EU 46 - US 11,5) </option>
<option class="disabled" value="12_454" >
(EU 46 2/3 - US 12) </option>
<option class="disabled" value="12_453" >
(EU 47 1/3 - US 12,5) </option>
</sel
這只是一個例子。...我的目標是現在通過給出尺寸來找到特定尺寸的值。 例如:
如果我指示尺寸為EU 40-US 7,我希望能夠解析值12_636
我以前已經使用過bs4模塊來解析HTML並查找特定的值,我通常這樣做:
from bs4 import BeautifulSoup as bs
soup=bs(html.text, 'lxml')
v=soup.find('option',{'class':''})['value']
但是在這里,因為使用上述方法將有更多可能的值,所以這不是我所需要的。 我嘗試在想要查找的標簽中添加期望的大小,但這沒有用。
v=soup.find('option',(EU 40 - US 7),{'class':''})['value']
看起來像這樣,但是是的,我知道,這是不正確的。 現在我完全不知道如何找到價值,因此,我將非常感謝我獲得的任何幫助。 非常感謝親愛的社區!
創建一個將每個option
的文本映射到其值的字典,確保從text
剝離所有多余的空格:
d = {option.text.strip(): option['value'] for option in soup.find_all('option')}
print(d['(EU 40 - US 7)'])
結果:
12_636
您還可以使用xpath和fromstring
。
# import requests
from lxml.html import fromstring
# url = ''
# tree = html.fromstring( requests.get(url).content)
h = '''
<option class="disabled" value="12_654" >
(EU 38 2/3 - US 6) </option>
<option class="disabled" value="12_3716" >
(EU 39 1/3 - US 6,5) </option>
<option class="disabled" value="12_636" >
(EU 40 - US 7) </option>
<option class="" value="12_634" >
EU 40 2/3 - US 7,5 </option>
<option class="" value="12_462" >
EU 41 1/3 - US 8 </option>
<option class="" value="12_460" >
EU 42 - US 8,5 </option>
<option class="" value="12_459" >
EU 42 2/3 - US 9 </option>
<option class="" value="12_458" >
EU 43 1/3 - US 9,5 </option>
<option class="" value="12_457" >
EU 44 - US 10 </option>
<option class="" value="12_456" >
EU 44 2/3 - US 10,5 </option>
<option class="" value="12_455" >
EU 45 1/3 - US 11 </option>
<option class="disabled" value="12_559" >
(EU 46 - US 11,5) </option>
<option class="disabled" value="12_454" >
(EU 46 2/3 - US 12) </option>
<option class="disabled" value="12_453" >
(EU 47 1/3 - US 12,5) </option>
</sel
'''
tree = fromstring(h)
print(tree.xpath("//option[text()[contains(.,'(EU 40 - US 7)')]]/@value"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.