python - bs4怎么匹配紧跟div后面的li标签
高洛峰
高洛峰 2017-04-17 17:23:26
0
2
348
from bs4 import BeautifulSoup
html='''
    <h1> A </h1>
    <p >AA </p>
    <li>a1</li>
    <li>a2</li>


    <h2> B </h2>
    <p >BB </p>
    <li > b1</li>
    <li > b2</li>
    <li > b3</li>

    <h3> C </h3>
    <p >CC</p>
    <li>   c1</li>
'''
soup=BeautifulSoup(html,'lxml',from_encoding='utf-8')

for p in soup.findAll('p'):
        print(p.text,end="")
        for dt in p.find_all_next("li"):
            print("\t",dt.text,end=",")
        print()
 期望输出  AA a1,a2
          BB b1,b2,b3
          CC c1
          

但是结果输出是
AA a1, a2, b1, b2, b3, c1,
BB b1, b2, b3, c1,
CC c1,

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(2)
大家讲道理

find_all_next() は、.next_elements 属性を通じて現在のタグの後のタグと文字列を反復し、すべての修飾されたノードを返します
最後まで直接反復するため、このように使用できません
別の判断を行うには .next_siblings を使用します

リーリー
いいねを押す +0
洪涛

実際、for をネストする必要はありません。if の単純な判断だけで済みます。 リーリー

結果:

リーリー

これは n 個の複雑さですが、

ネストは n^2 個の複雑さです。 for

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!