アプリ版:「スタンプのみでお礼する」機能のリリースについて

https://www.k-hitorigoto.online/entry/2017/03/09 …

このサイトを参考に,webページの表を内容を取得しました.

以下実行内容
# ヘッダ行は除いて取得
for i in range(1,len(trs)):
tds = trs[i].find_elements(By.TAG_NAME, "td")
line = ""
for j in range(0,len(tds)):
if j < len(tds):
line += "%s\t" % (tds[j].text)
else:
line += "%s" % (tds[j].text)
print(line+"\n")
with open("a.csv", "a") as file:
print(line+"\n", file=file)

print(line+"\n")の出力結果は,
2020/10/28 06:39 1サイド 自動 自律 06:39 08:26
自律制御

となり,表の取得は成功しているのですが,csv出力したときに,
2020/10/28 06:39 1サイド 自動 自律 06:39 08:26までが,1行目のAのセルに,
自律制御が2行目のセルに格納されてしまします.

for j in range(0,len(tds)):
if j < len(tds):
line += "%s\t," % (tds[j].text)
else:
line += "%s" % (tds[j].text)
として,すべての間にカンマを入れて,2020/10/28 06:39,1サイド,自動,..としても同じセルに入ってしまします.

それぞれ一つのセルに入れるには,どのようにすればよろしいでしょうか.


環境は,
python3.8.3,windows10,
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
import csv
です.

ご回答よろしくお願いいたします.

質問者からの補足コメント

  • ご回答ありがとうございます.
    htmlは,このような感じで書かれています.
    質問時とは少し違うことをお許しください.

    「"%s,」で回したのですが,やはり,1行目のA列にすべて格納されてしましす.
    どのようにすればよろしいでしょうか..

    「csv出力」の補足画像1
      補足日時:2020/10/29 12:09

A 回答 (3件)

Pythonは扱った事がないのですが…。


ソースを見ると、tdのタグでな囲われた文字列毎にタブで区切ってtrのタグで囲われたグループ毎に改行を入れているのですかね?

このソースを見ただけだと、おかしな所はないように思えます。
元のwebページの「自律制御」がtrタグで囲われていたり、「自律制御」の後に改行コードが含まれていたりしませんか?


脱線しますが、
厳密なcsvにしたいのでしたら「"%s\t,"」ではなく「"%s,」(”\t”はタブコードだと思いますので)が宜しいかと。
言語固有のことが分からないので、”\t”で正しいということでしたら申し訳ありません。
    • good
    • 0

記載ミスが…


誤:「自立制御の後」
正:「自立制御の前」
    • good
    • 0

やはりhtml側に改行が入っていますね。


html読み込み時にbrタグを削除するような処理を入れるか、ループの中でbrタグを無視するような作りにすれば良いと思います。
先述の通りpythonには明るくないため、詳しい回答ができず済みません。

csvについてですが、
これは各データをカンマで区切った形式のことを言い、通常は拡張子を”.csv”とします。
拡張子を上のようにしてエクセルで開けば、特別な設定をせずに各セルに1データずつセットしてくれます。
どのように運用したいのか把握できていないので、これという回答はできませんが、通常のテキストをエクセルに貼り付けるだけでしたら、タブ区切りのtsv形式が良いと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!