データスクレイピングで改行が含まれる列データの取り出し方

お世話になります。
たとえばこのテーブルをブラウザからデータスクレイピングすると

テスト テスト
123
sample sample 2

カラム名(テスト123)に改行が混じっており、
カラム名に改行を含んで取得することは可能でしょうか。

row.Item(“テスト” + vbCrLf).ToString

→ やってみましたができませんでした。

こちらを、 row.Item("テスト" + vbLf + "123").ToString としてお試しください。
Excelのセル内部で行われる改行は、vbLfで指定する必要がありました。

列名に改行が入って、以降の処理で改行記号を意識しなければならない

と言うのでしたら、いっそ、列名から改行記号を取り除くってのはどうですか?

代入アクティビティ
左辺:DT.Columns(ix).ColumeName
右辺:DT.Columns(ix).ColumeName.Replace(Controlchars.Cr,"").Replace(Controlchars.Lf,"")

こんな感じ

2 Likes

@cheez_RPA @HANACCHI

ご回答ありがとうございます!
DT.Columns(ix)
のixというのは全列に対し、改行記号を取り除くという認識であってますでしょうか。
無知で申し訳ございません。

こんにちは

これの対応は厳密にはブラウザによって変わる可能性があります。

IEの場合、スクレイピングだけではなくGet Textなどもそうなると思いますが、対象テキスト中の<br />はCR+LFになります。そのためヘッダの値は
row.Item(“テスト” + vbCrLf+"123").ToString
となると思います。

一方、Chrome, Firefoxの場合、対象テキスト中の<br />はLFになります。そのためヘッダの値は
row.Item(“テスト” + vbLf+"123").ToString
となると思います。

いずれにしましても、うまくヘッダの文字列が一致しない時は、一度そのヘッダの文字列(ExtractDataTable.Columns(カラム番号).ColumnName)をファイルに書き出してみて、どのような文字列になっているかを確認した方が良いと思います。(場合によってはバイナリーエディタで見たほうが良いケースもあります。)

1 Like

「繰り返し(コレクションの要素)」を使用します。

コレクションに、DataTable.columnsを指定すると、列全体を指定した事になります。
要素のitemは、右側のパラメタパネルの「TypeArgument」の指定で、DataColumn型を指定します。
それと、同じくパラメタパネルの「出力-現在のインデックス」にInt32型の変数ixを定義します。

すると、ixは0から列の数まで繰り返しますので、本体に代入アクティビティを記載すると、全ての列に対して改行コードが除去される事になります。

1 Like