首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用BeautifulSoup获取content between<hr class = 'calibre2'> ... <hr class="calibre2“/>

如何使用BeautifulSoup获取content between<hr class = 'calibre2'> ... <hr class="calibre2“/>
EN

Stack Overflow用户
提问于 2016-07-31 11:57:22
回答 2查看 783关注 0票数 1
代码语言:javascript
复制
<hr class="calibre2" />
<h3 class="calibre5">-ability</h3> (in nouns 构成名词) : <br class="calibre4" />
<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ capability 能力 </span></p></blockquote>

<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ responsibility 责任 </span></p></blockquote>

<hr class="calibre2" />
<h3 class="calibre5">-ibility</h3> (in nouns 构成名词) : <br class="calibre4" />
<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ capability 能力 </span></p></blockquote>

<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ responsibility 责任 </span></p></blockquote>

<hr class="calibre2" />

上面这是我的汤的一部分,我想在两个<hr>之间获得内容,因为hr不是一个结束标记,所以我不能使用一些简单的方法,我想如果我可以使用find_next_elements,但如何能让他停下来,当他看到<hr class = 'calibre2'>,这样我就可以获得那些内容,谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-07-31 12:03:09

您可以遍历所有hr元素,并使用.find_next_siblings()遍历下一个同级元素。然后,如果你遇到了hr,打破这个循环:

代码语言:javascript
复制
for hr in soup.find_all("hr", class_="calibre2"):
    for item in hr.find_next_siblings():
        if item.name == "hr":
            break

        print(item)
    print("-----")
票数 2
EN

Stack Overflow用户

发布于 2016-07-31 13:41:36

您可以结合find_all_next https://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all-next-and-find-next检查hr和calibre2类

代码语言:javascript
复制
from bs4 import BeautifulSoup

testStr = """
<hr class="calibre2" />
<h3 class="calibre5">-ability</h3> (in nouns 构成名词) : <br class="calibre4" />
<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ capability 能力 </span></p></blockquote>

<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ responsibility 责任 </span></p></blockquote>

<hr class="calibre2" />
<h3 class="calibre5">-ibility</h3> (in nouns 构成名词) : <br class="calibre4" />
<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ capability 能力 </span></p></blockquote>

<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ responsibility 责任 </span></p></blockquote>

<hr class="calibre2" />
""";
soup = BeautifulSoup(testStr, 'lxml')
hrTag = soup.hr

nextTags = hrTag.find_all_next()

content = []

for item in nextTags:
    # check if we have reached the second calibre2 hr
    print("Name %s ; Class %s" % (item.name, item['class'][0]))
    if item.name == 'hr' and item['class'][0] == 'calibre2':
        break
    content.append(item)
print(content)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38680626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档