python lxmlを使用して、複数の<br/>タグを1つのタグにマージします

楽しい

削り取られたhtmlコンテンツをクリーンアップするPythonスクリプトがあります。これは、BeautifulSoup4を使用しており、非常にうまく機能します。最近、私はlxmlを学ぶことにしましたが、チュートリアルに従うのが(私にとって)難しいことがわかりました。たとえば、次のコードを使用して、複数の<br />タグを1つにマージします。つまり、複数のタグがある場合は、1つ<br />だけを残して、すべてを削除します。

from bs4 import BeautifulSoup, Tag
data = 'foo<br /><br>bar. <p>foo<br/><br id="1"><br/>bar'
soup = BeautifulSoup(data)
for br in soup.find_all("br"):
    while isinstance(br.next_sibling, Tag) and br.next_sibling.name == 'br':
        br.next_sibling.extract()
print soup
<html><body><p>foo<br/>bar. </p><p>foo<br/>bar</p></body></html>

lxmlでこれと同様の方法を実現するにはどうすればよいですか?ありがとう、

jfs

タグの.drop_tag()重複した連続した出現を削除する方法を試すことができます<br/>

from lxml import html

doc = html.fromstring(data)
for br in doc.findall('.//br'):
    if br.tail is None: # no text immediately after <br> tag
        for dup in br.itersiblings():
            if dup.tag != 'br': # don't merge if there is another tag inbetween
                break
            dup.drop_tag()
            if dup.tail is not None: # don't merge if there is a text inbetween
               break

print(html.tostring(doc))
# -> <div><p>foo<br>bar. </p><p>foo<br>bar</p></div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonを使用してxml内の複数の<br>間のテキストを取得します

分類Dev

Python、美しいスープ、<br>タグ

分類Dev

<br>タグで分割されたlxml、python、.tailを使用したHTML解析

分類Dev

タグを削除し、すべてのbrタグとpタグを1つのスペースに置き換えます

分類Dev

Pythonのre.sub()を使用して、指定されたタグ間で\ nを<br>に置き換える

分類Dev

1つのWebで複数のページからデータをスクレイピングする方法、PythonとBeautifulSoupを使用しています

分類Dev

<br/>タグ間のリストから要素を削除する-PYTHON

分類Dev

<br>タグの代わりに何を使用しますか?

分類Dev

lxmlを使用してPythonで複数の名前空間XMLを解析する

分類Dev

複数の<br>タグをjavascriptに置き換えます

分類Dev

BeautifulSoupとPythonを使用して、クラスを持つh1タグやpタグなど、複数のタグからテキストを抽出します。

分類Dev

複数の類似したタグ「named」値の1つを抽出する[Python-lxml]

分類Dev

2つのデータフレームをマージし、1つのデータフレームの1つの行を他のデータフレームのすべての行にマッピングするPython Pandas

分類Dev

Pythonは相互作用データを1つの行にマージします

分類Dev

Python3 4ワードの後に配列の各要素に<br>タグを追加する方法は?

分類Dev

brタグの正規表現の前にすべてを削除します

分類Dev

brタグの正規表現の前にすべてを削除します

分類Dev

Python 3.xを使用して、複数の列をcsvの1つの列にスタックします

分類Dev

phpは複数のbrタグを置き換えます

分類Dev

br、PYTHON3以外の特徴的なタグがないhtmlからテキストをスクレイピングしようとしています

分類Dev

Pythonを使用してCSVの1つの列からタグを抽出します

分類Dev

Pythonを使用して複数の画像を斜めに1つの画像にマージする方法

分類Dev

Pythonとbeautifulsoupを使用して<br/>タグの後の文字列(特定のシナリオの日付値)を解析する方法

分類Dev

1つのx軸を使用して1つのデータフレームから複数のグラフをプロットする-Python

分類Dev

Python / Elementtreeを使用してXMLツリーに同じタグを持つ複数のサブ要素を追加します

分類Dev

2つの<br>タグの前にデータを取得するXpath

分類Dev

Python Webスクレイピング:複数のタグを持つ1つの属性を抽出します

分類Dev

Python Pandas:列名を持つデータフレームの列を1つの列にマージします

分類Dev

パンダ複数の値を持つ行データを列のPythonリストにマージします

Related 関連記事

  1. 1

    Pythonを使用してxml内の複数の<br>間のテキストを取得します

  2. 2

    Python、美しいスープ、<br>タグ

  3. 3

    <br>タグで分割されたlxml、python、.tailを使用したHTML解析

  4. 4

    タグを削除し、すべてのbrタグとpタグを1つのスペースに置き換えます

  5. 5

    Pythonのre.sub()を使用して、指定されたタグ間で\ nを<br>に置き換える

  6. 6

    1つのWebで複数のページからデータをスクレイピングする方法、PythonとBeautifulSoupを使用しています

  7. 7

    <br/>タグ間のリストから要素を削除する-PYTHON

  8. 8

    <br>タグの代わりに何を使用しますか?

  9. 9

    lxmlを使用してPythonで複数の名前空間XMLを解析する

  10. 10

    複数の<br>タグをjavascriptに置き換えます

  11. 11

    BeautifulSoupとPythonを使用して、クラスを持つh1タグやpタグなど、複数のタグからテキストを抽出します。

  12. 12

    複数の類似したタグ「named」値の1つを抽出する[Python-lxml]

  13. 13

    2つのデータフレームをマージし、1つのデータフレームの1つの行を他のデータフレームのすべての行にマッピングするPython Pandas

  14. 14

    Pythonは相互作用データを1つの行にマージします

  15. 15

    Python3 4ワードの後に配列の各要素に<br>タグを追加する方法は?

  16. 16

    brタグの正規表現の前にすべてを削除します

  17. 17

    brタグの正規表現の前にすべてを削除します

  18. 18

    Python 3.xを使用して、複数の列をcsvの1つの列にスタックします

  19. 19

    phpは複数のbrタグを置き換えます

  20. 20

    br、PYTHON3以外の特徴的なタグがないhtmlからテキストをスクレイピングしようとしています

  21. 21

    Pythonを使用してCSVの1つの列からタグを抽出します

  22. 22

    Pythonを使用して複数の画像を斜めに1つの画像にマージする方法

  23. 23

    Pythonとbeautifulsoupを使用して<br/>タグの後の文字列(特定のシナリオの日付値)を解析する方法

  24. 24

    1つのx軸を使用して1つのデータフレームから複数のグラフをプロットする-Python

  25. 25

    Python / Elementtreeを使用してXMLツリーに同じタグを持つ複数のサブ要素を追加します

  26. 26

    2つの<br>タグの前にデータを取得するXpath

  27. 27

    Python Webスクレイピング:複数のタグを持つ1つの属性を抽出します

  28. 28

    Python Pandas:列名を持つデータフレームの列を1つの列にマージします

  29. 29

    パンダ複数の値を持つ行データを列のPythonリストにマージします

ホットタグ

アーカイブ