使用python-usoap删除datalist标记

2024-06-01 07:41:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着抓取一个DATALIST标签,其中有很多选项。我想把这些选项列成一个单子。你知道吗

当我使用汤.findAll()它将所有选项存储在一个框中,这不允许我迭代和查找值。下面是我试图搜集的代码。你知道吗

 <datalist id="brands">
        <option id="7638" value="Ashok Leyland">
        </option>
        <option id="3960" value="Aston Martin">
        </option>
        <option id="205" value="Audi">
        </option>
        <option id="207" value="BMW">
        </option>
        <option id="206" value="Bentley">
        </option>
        <option id="7648" value="Bugatti">
        </option>
        <option id="7652" value="Caterham">
        </option>
        <option id="212" value="Hindustan Motors">
        </option>
        <option id="54157" value="Jeep">
        </option>
       </datalist>

ctr=soup.findAll('datalist',{'id':'brands'})

ctr只有一个元素包含完整的代码。我不知道如何从选项中获取所有值的列表。当我尝试使用for循环时,它只为第一个循环运行。你知道吗


Tags: 代码idvalue选项标签单子optionctr
1条回答
网友
1楼 · 发布于 2024-06-01 07:41:44

您可以使用CSS选择器#brands option[value]->;这将选择所有<option>属性为value=id="brands"标记下的<option>标记:

data = ''' <datalist id="brands">
        <option id="7638" value="Ashok Leyland">
        </option>
        <option id="3960" value="Aston Martin">
        </option>
        <option id="205" value="Audi">
        </option>
        <option id="207" value="BMW">
        </option>
        <option id="206" value="Bentley">
        </option>
        <option id="7648" value="Bugatti">
        </option>
        <option id="7652" value="Caterham">
        </option>
        <option id="212" value="Hindustan Motors">
        </option>
        <option id="54157" value="Jeep">
        </option>
       </datalist>'''

from bs4 import BeautifulSoup

soup = BeautifulSoup(data, 'lxml')

out = [option['value'] for option in soup.select('#brands option[value]')]

print(out)

印刷品:

['Ashok Leyland', 'Aston Martin', 'Audi', 'BMW', 'Bentley', 'Bugatti', 'Caterham', 'Hindustan Motors', 'Jeep']

进一步阅读:

CSS Selector Reference

相关问题 更多 >