0

私はPythonは初めてですが、これまでのところ言語を本当に楽しんでいます。

私は複雑な html5 要素の束を作成し、html5lib モジュールを使用してきました。

段落内の要素を調べると、それらをうまく印刷できますが、bs4の挿入メソッドを使用しようとすると、他のすべての要素出力しか得られず、理由がわかりません!

私のパイソン:

i = 0
    for gallery_elem in gallery_header_next_sibling:
        if ( gallery_elem.name.lower() == 'img' ):
            if ( i == 0 ):
                new_gallery = soup.new_tag( "div" )
                new_gallery[ "class" ] = "gallery"

            new_gallery_elem = soup.new_tag( "figure" )

            if ( gallery_elem.has_attr( "alt" ) ):
                new_gallery_cap = soup.new_tag( "figcaption" )
                new_gallery_cap.string = gallery_elem[ "alt" ]
                new_gallery_elem.insert( 2, new_gallery_cap )

            if ( gallery_elem.has_attr( "title" ) ):
                new_gallery_attribution = soup.new_tag( "dl" )
                new_gallery_attribution_dt = soup.new_tag( "dt" )
                new_gallery_attribution_dt.string = "Image owner:"
                new_gallery_attribution_dd = soup.new_tag( "dd" )
                new_gallery_attribution_dd.string = gallery_elem[ "title" ]
                new_gallery_attribution.insert( 0, new_gallery_attribution_dt )
                new_gallery_attribution.insert( 1, new_gallery_attribution_dd )

        new_gallery_elem.insert( 1, new_gallery_attribution )
        new_gallery_elem.insert( 1, gallery_elem )
        i = i + 1

    new_gallery_elem.insert( 1, gallery_elem )

HTML

<img alt="Caption One." src="img/orange.jpg" title="Attribution One."/>
<img alt="Caption Two." src="img/red.jpg" title="Attribution Two."/>
<img alt="Caption Three." src="img/urban.jpg" title="Attribution Three."/>
<img alt="Caption Four." src="img/brolly.jpg" title="Attribution Four."/>
<img alt="Caption Five." src="img/tomy.jpg" title="Attribution Five."/>

出力:

<figure><figcaption>Caption One.</figcaption><img alt="Caption One." src="img/orange.jpg" title="Attribution One."/><dl><dt>Image owner:</dt><dd>Attribution One.</dd></dl></figure>
<figure><figcaption>Caption Three.</figcaption><img alt="Caption Three." src="img/urban.jpg" title="Attribution Three."/><dl><dt>Image owner:</dt><dd>Attribution Three.</dd></dl></figure>
<figure><figcaption>Caption Five.</figcaption><img alt="Caption Five." src="img/tomy.jpg" title="Attribution Five."/><dl><dt>Image owner:</dt><dd>Attribution Five.</dd></dl></figure>

次の行をヤンクアウトすると、5 つの要素すべてが取得されます。私が間違っていることについて、誰かが何らかのインクリングを持っていますか?

new_gallery_elem.insert( 1, gallery_elem )
4

1 に答える 1

0

そのため、いくつかの実験の後、必要な要素をリストに保存し、スープをライブで編集しようとする代わりにリストから取得すると、問題が解決することがわかりました。

オブジェクトを作成して保存したら、以前に作成してスープに挿入した親要素に戻すことができました。

他の誰かの早すぎるハゲが解決することを願っています…</p>

于 2016-06-18T23:57:55.480 に答える