5

我正在尝试使用给定格式解析 html 页面:

<img class="outer" id="first" />
<div class="content" .../>
<div class="content" .../>
<div class="content" />
<img class="outer" id="second" />
<div class="content" .../>
<div class="content" .../>
<img class="outer" id="third" />
<div class="content" .../>
<div class="content" .../>

在遍历 div 标签时,我想弄清楚当前的 div 标签是否在具有 id 'first'、'second' 或 'third' 的 img 标签下。有没有办法做到这一点?我有 img 块和 div 块的列表:

img_blocks = soup.find_all('img', attrs={'class':'outer'})
div_Blocks = soup.find_all('div', attrs={'class':'content'})
4

2 回答 2

5

使用.find_previous_sibling

>>> for divtag in div_Blocks:
...     print divtag.find_previous_sibling('img')
... 
<img class="outer" id="first"/>
<img class="outer" id="first"/>
<img class="outer" id="first"/>
<img class="outer" id="second"/>
<img class="outer" id="second"/>
<img class="outer" id="third"/>
<img class="outer" id="third"/>
于 2013-06-30T07:19:23.030 回答
0

不是从您当前的起点 - 您需要遍历所有标签,或至少两种类型的标签,如果标签是 img 类型,则存储 id 如果类是 div 则当前存储的 id 告诉您您在哪个容器中. NB 您可以在 BS 中使用 re 来过滤这两种类型。

目前,您正在通过仅提取标签来删除上下文。

于 2013-06-30T07:25:12.660 回答