【发布时间】:2022-01-23 08:41:43
【问题描述】:
是否可以制作一个 Beautifulsoup 过滤器,只过滤来自“container-01”的所有“订单卡”(没有来自其他容器的“订单卡”)? 示例 HTML 下方
<div class="items-container" container-id="container-01">
<div class="order-card">order_01
<div class="item-card">item1</div>
<div class="item-card">item2</div>
<div class="item-card">item3</div>
<div class="item-card">item4</div>
</div>
<div class="order-card">order_02
<div class="item-card">itemA</div>
<div class="item-card">itemB</div>
<div class="item-card">itemC</div>
<div class="item-card">itemD</div>
</div>
<div class="order-card">order_03
<div class="item-card">itemW</div>
<div class="item-card">itemX</div>
<div class="item-card">itemY</div>
<div class="item-card">itemZ</div>
<div class="item-card">item</div>
</div>
</div>
<div class="items-container" container-id="container-02">
<div class="order-card">order_53
<div class="item-card">item_7</div>
<div class="item-card">item_8</div>
</div>
</div>
<div class="items-container" container-id="container-03">
<div class="order-card">order_13
<div class="item-card">item_16</div>
<div class="item-card">item_17</div>
<div class="item-card">item_18</div>
</div>
</div>
到目前为止,我所拥有的是下面的代码,它从所有容器中提取所有“订单卡”。
目标是“page_soup”只包含“container-01”中的所有“order-card”项目。
随后的循环使用“page_soup”遍历“order-card”中的每个项目,以获取每个“item-card”的详细信息。
上面改写了! 目标是仅从“container-01”中的每个“item-card”中获取详细信息。
除了“container-01”之外,不需要解析任何其他容器。
only_item_cells = SoupStrainer('div', attrs={"class":"order-card"})
page_soup = BeautifulSoup(page_html, 'html.parser', parse_only=only_item_cells)
接下来是一个循环,从所有容器中的所有“项目卡”中获取详细信息。事实上,这是不想要的,因为输出仅包含来自“container-01”以外的容器中的项目。
在 Anaconda、Win64 上运行 Python 3.8.8
【问题讨论】:
标签: python html beautifulsoup