BeautifulSoupforループ-2つのループごとの結果を組み合わせる

HG123

beautifulSoup次の構造を持つHTMLを使用して解析しようとしています。

   <table>
       <tr><td class="title">Title 2</td></tr>
   </table>
   <table>
       <tr><td>Label 1</td><td>Label 2</td><td>Label 3</td></tr>
       <tr><td class="data">Data 1</td><td class="data">Data 2</td><td class="data">Data33</td></tr>       </table>

   <table>
       <tr><td class="title">Title 2</td></tr>
   </table>
   <table>
       <tr><td>Label 1</td><td>Label 2</td><td>Label 3</td></tr>
       <tr><td class="data">Data 1</td><td class="data">Data 2</td><td class="data">Data33</td></tr>
   </table>

私が抱えている問題は、データフレームのデータと同じ行にタイトルを追加したいということです。しかし、forループ(テーブルの検索に基づく)を使用すると、タイトルをデータポイントと同じリストに入れる方法がわかりません。そのため、データフレームに入るデータは[ title, Data 1, Data 2, Data 3]になります

Pythonコードは次のとおりです。

tables = soup.find_all('table')
i = 0
for t in tables:
    if(i % 2) == 1:
        datapoints = t.find_all('td', class_='data')
        data = []
        for d in datapoints:
            data.append(d.text)
        i += 1
    else:
        title = t.find('td', class_='title').text
        i += 1

別のforループでラップしようとしましたが、テーブルをループする必要があるため、機能しません。

2つのデータフレーム(1つはタイトル用、もう1つはデータ用)を作成し、最後にそれらをマージすることもできますが、それが最善の方法であるとしたら驚きます。

2つのforループのセットの結果をマージする方法を知っている人はいますloop n and n+1(つまり)?

グレイファー

を使用するのはどうですかtry..except

for table in soup.find_all('table'):
    try:
        title = table.find('td', class_='title').text
    except AttributeError:    # Triggers if no title present
        data = [td.text for td in table.find_all('td', class_='data')]

あなたが望むリストを取得することに関して:

data = []
for table in soup.find_all('table'):
    try:
        data.append([table.find('td', class_='title').text])
    except AttributeError:    # Triggers if no title present
        data[-1].extend(td.text for td in table.find_all('td', class_='data'))
print(data)
# [['Title 1', 'Data 1', 'Data 2', 'Data33'],
#  ['Title 2', 'Data 1', 'Data 2', 'Data33']]

これは、タイトルの直後に対応するデータを含むテーブルが続く限り機能します。

ただし、pandas.DataFrame後で追加する場合は、おそらくこれが簡単です。

import pandas as pd

titles, data = [], []
for table in soup.find_all('table'):
    try:
        titles.append(table.find('td', class_='title').text)
    except AttributeError:    # Triggers if no title present
        data.append([td.text for td in table.find_all('td', class_='data')])
df = pd.DataFrame(zip(*data), columns=titles)
# df = pd.DataFrame.from_items(zip(titles, data))  # also works
print(df)
#   Title 1 Title 2
# 0  Data 1  Data 1
# 1  Data 2  Data 2
# 2  Data33  Data33

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Python + BeautifulSoupforループの問題

分類Dev

2つのforeachループ内でxmlの結果を組み合わせる

分類Dev

追加の列の1つのSQLクエリで2つのグループごとのクエリの結果を組み合わせる方法は?

分類Dev

2つのForeachループを異なる配列結果と組み合わせる方法は?

分類Dev

2つのテーブルの結果を組み合わせる方法

分類Dev

2つのmysqlテーブルを行ごとに組み合わせる

分類Dev

Rループの結果を保存し、新しい結果と組み合わせる

分類Dev

2つのforループを組み合わせる方法

分類Dev

2つのグループバイを組み合わせる?

分類Dev

2つのForEachループを組み合わせるPHP

分類Dev

2つのループを組み合わせる方法

分類Dev

Python で 2 つのループを組み合わせる

分類Dev

2つの異なるテーブルの結合結果を組み合わせたSQL

分類Dev

3つのテーブルの結果を組み合わせる

分類Dev

グループごとのベクトル内で最も頻繁な組み合わせを見つける

分類Dev

2つのテーブルの結果を組み合わせて、SQLの単一の列に表示する方法

分類Dev

構造の異なる2つのテーブルの結果を組み合わせる

分類Dev

2つの入力フィールドの結果をJavaScriptと組み合わせますか?

分類Dev

グループごとにすべての組み合わせを見つける PySpark

分類Dev

Pythonパンダでいくつかのデータフレームの結果をforループと組み合わせる

分類Dev

2つのテーブルを検索し、結果をPDOと組み合わせます

分類Dev

1つのループlaravelで2つの変数を組み合わせる

分類Dev

RxJava / Android:2つの依存オブザーバブルの結果を組み合わせる

分類Dev

2つのテーブルの結果を組み合わせるSQLクエリ

分類Dev

キーごとに2つの大きな辞書を組み合わせる-最速のアプローチ

分類Dev

左結合とグループ化を使用して、同じテーブルからの 2 つのクエリを組み合わせる

分類Dev

T-SQL-2つのテーブルの結果を2つの異なるWHERE句と組み合わせる方法

分類Dev

2つの異なるクエリの結果をマングースと組み合わせる方法は?

分類Dev

Linux列ごとに2つのファイルを組み合わせる

Related 関連記事

  1. 1

    Python + BeautifulSoupforループの問題

  2. 2

    2つのforeachループ内でxmlの結果を組み合わせる

  3. 3

    追加の列の1つのSQLクエリで2つのグループごとのクエリの結果を組み合わせる方法は?

  4. 4

    2つのForeachループを異なる配列結果と組み合わせる方法は?

  5. 5

    2つのテーブルの結果を組み合わせる方法

  6. 6

    2つのmysqlテーブルを行ごとに組み合わせる

  7. 7

    Rループの結果を保存し、新しい結果と組み合わせる

  8. 8

    2つのforループを組み合わせる方法

  9. 9

    2つのグループバイを組み合わせる?

  10. 10

    2つのForEachループを組み合わせるPHP

  11. 11

    2つのループを組み合わせる方法

  12. 12

    Python で 2 つのループを組み合わせる

  13. 13

    2つの異なるテーブルの結合結果を組み合わせたSQL

  14. 14

    3つのテーブルの結果を組み合わせる

  15. 15

    グループごとのベクトル内で最も頻繁な組み合わせを見つける

  16. 16

    2つのテーブルの結果を組み合わせて、SQLの単一の列に表示する方法

  17. 17

    構造の異なる2つのテーブルの結果を組み合わせる

  18. 18

    2つの入力フィールドの結果をJavaScriptと組み合わせますか?

  19. 19

    グループごとにすべての組み合わせを見つける PySpark

  20. 20

    Pythonパンダでいくつかのデータフレームの結果をforループと組み合わせる

  21. 21

    2つのテーブルを検索し、結果をPDOと組み合わせます

  22. 22

    1つのループlaravelで2つの変数を組み合わせる

  23. 23

    RxJava / Android:2つの依存オブザーバブルの結果を組み合わせる

  24. 24

    2つのテーブルの結果を組み合わせるSQLクエリ

  25. 25

    キーごとに2つの大きな辞書を組み合わせる-最速のアプローチ

  26. 26

    左結合とグループ化を使用して、同じテーブルからの 2 つのクエリを組み合わせる

  27. 27

    T-SQL-2つのテーブルの結果を2つの異なるWHERE句と組み合わせる方法

  28. 28

    2つの異なるクエリの結果をマングースと組み合わせる方法は?

  29. 29

    Linux列ごとに2つのファイルを組み合わせる

ホットタグ

アーカイブ