shunsuke0204
@shunsuke0204 (shunsuke)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

スクレイピングで得た情報を整理したい

解決したいこと

スクレイピングで得たcsvが縦に並んでいるのを整えたい

python のselenium であるサイトのスクレイピングを行っています。beautifulsoupは使用できないサイトでした。
スクレイピングでtableタグの中から、いくつかのtdタグのついたものを取り出そうと試みております。
スクレイピングで得たcsvとlistが縦1列に並んでおり、こちらを15列で1行のデータに整理したいです。
エクセルのマクロで解決を試みましたが、下記のcsvファイルを見ていただくとわかる通り、順番のカラムがついてしまい、都合がよくありません。
解決方法をご存知でしたらご教授お願い致します。。

実行しているコード

tableElem = driver.find_element_by_xpath("テーブルのxpath")
tds = tableElem.find_elements_by_tag_name('td')
dataArray = []
dataArray.clear()
for x in range(len(tds)):
     dataArray.append(tds[x].text)
dataArray

結果

['Aコード',
 'A情報1',
 'A名前',
 'A作成者',
 'A情報3',
 'A情報4',
 'A情報5',
 'A情報6',
 'A情報7',
 'A情報8',
 'A情報9',
 'A情報10',
 'A*',
 'A情報11',
 'A情報12',
 'Bコード',
 'B情報1',
 'B名前',
 'B作成者',
 'B情報3',
 'B情報4',
 'B情報5',
 'B情報6',
 'B情報7',
 'B情報8',
 'B情報9',
 'B情報10',
 'B*',
 'B情報11',
 'B情報12',]

実行しているコード

pd.DataFrame(dataArray).to_csv('test.csv')

結果

test.csv
,0
0,Aコード
1, A情報1
2, A名前
3, A作成者
4, A情報3

自分で試したこと

csv出力後エクセルでインポートするためエクセルのほうでマクロを組んで無理やり横に15列並ばせることはできたのですが、それでは都合が悪いのでエクセルにインポートをする前に横に並べられたらと考えています。
pandasを用いてcsvの加工を行おうとも考えましたが、エクセルのマクロのような処理を行うコードが分かりませんでした。

0

2Answer

...
data_array = [td.text for td in tds]
pd.Dataframe(data_array).T.to_csv('YOUR_CSV_PATH', index=False, header=False)
0Like

Comments

  1. @shunsuke0204

    Questioner

    回答ありがとうございます。
    おかげで横一列にcsvを取得することができました。
    for文も教えていただいたほうが良いですね、ありがとうございます。
    もしご存じでしたら、csvを6列ごとに改行する方法をご存じでしたら教えていただきたいです。

こういうことですか

reshaped_data = [data_array[s:s+15] for s in range(0, len(data_array), 15)]
pd.DataFrame(reshaped_data)
0Like

Comments

  1. @shunsuke0204

    Questioner

    回答ありがとうございます。
    15行に一度改行する方法も考え方次第、コード次第で実行できることがわかりました。ありがとうございます。

Your answer might help someone💌