网页抓取中如何获取HTML内的第二个span元素?
获取第二个span元素的几种方法
i.span本质是调用了find('span'),只会返回第一个匹配的span元素,要拿到第二个可以试试下面几种方法:
方法1:用find_all()获取所有span后取索引
先获取所有span元素组成的列表,再通过索引1(Python列表从0开始计数)选取第二个:
# 获取所有span元素 all_spans = i.find_all('span') # 取第二个span second_span = all_spans[1] # 提取文本的话可以用 span_text = second_span.text.strip()
方法2:用CSS选择器直接定位
利用CSS选择器的:nth-of-type(2)规则,直接选中父元素下的第二个span:
second_span = i.select_one('span:nth-of-type(2)')
补充:通过兄弟元素定位
因为你的例子里第一个span有明确的item-num类,也可以先找到第一个span,再取它的下一个有效兄弟元素:
first_span = i.find('span', class_='item-num') second_span = first_span.next_sibling.next_sibling # 两次next_sibling是因为HTML里的换行、空格会被解析为NavigableString节点
你的目标HTML代码:
<h2 id="jojo-39-s-bizarre-adventure"> <span class="item-num">7 </span> <span>Jojo's Bizarre Adventure</span> </h2>
内容的提问来源于stack exchange,提问作者HotSpices
相关产品推荐
相关产品推荐

