如何使用python获取<li>和<span>标记中的每个值

2024-10-02 00:29:51 发布

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

我正在尝试从站点https://www.cellartracker.com/m/wines/12344中删除一些数据。我不明白如何获取每个不属于tag中的类的值。以下是我要查找的网站代码:

<ul class="twin-set-list">
        <li><span>Vintage</span> 2000</li>
        <li><span>Type</span> Red</li>
        <li><span>Producer</span> Balnaves of Coonawarra</li>
        <li><span>Varietal</span> Cabernet Sauvignon</li>
        <li><span>Designation</span> The Tally Reserve</li>
        <li><span>Vineyard</span> n/a</li>
        <li><span>Country</span> Australia</li>
        <li><span>Region</span> South Australia</li>
        <li><span>SubRegion</span> Limestone Coast</li>
        <li><span>Appellation</span> Coonawarra</li>
    </ul>

像2000,Red这样的值没有任何类,所以我可以用什么方法来获取数据。我在python中尝试了以下代码(下面只给出了html部分):

^{pr2}$

有人能告诉我如何提取这些数据吗?在


Tags: 数据代码httpscom站点tagwwwred
3条回答

您可以迭代bs4对象的contents属性:

from bs4 import BeautifulSoup as soup
d = [[getattr(c, 'text', c).strip() for c in i] for i in soup(html, 'html.parser').find_all('li')]

输出:

^{pr2}$

也许你可以试试这个:

for li_tag in soup.find_all('ul', {'class':'twin-set-list'}):
for span_tag in li_tag.find_all('li'):
    field = span_tag.find('span').text
    value = span_tag.text
    value = value[len(field)+1:]
    need[field] = value

以防万一,若“value”中有相同的字段,不要替换它,而是使用substring。在

您可以通过以下方式替换代码:

field = span_tag.find('span').text 
value = span_tag.text.replace(field,'')

它不是很干净,但它可以与您的代码一起工作。在

相关问题 更多 >

    热门问题