質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

1回答

383閲覧

指定したテキストが入っている次のテキストを取得したい

Palo_Punte

総合スコア21

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2020/09/13 05:10

<table> <tbody> <tr> <td>2020-01-06</td> <td>260</td> </tr> </tbody> <tbody> <tr> <td>2020-01-07</td> <td>864</td> </tr> </tbody> <tbody> <tr> <td>2020-01-08</td> <td>289</td> </tr> </tbody> </table>

goqueryを使っています。
doc.Find("table > tbody:nth-child(3) > tr > td:nth-child(1)").Text()で2020-01-08が取れるとします。
ただ今回はこのtableの2020-01-08の次の289を取得したい、今回は2020-01-07の次の864を取得したいのようにプログラムで指定され変わる場合はどのように取得をすれば良いのでしょうか?
プログラムで2020-01-08が指定された場合イメージですがdoc.Find("table > tbody > tr > td").Text() == 2020-01-08のタグのセレクタを取得みたいにできないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nobonobo

2020/09/13 12:51 編集

これも以前の回答 https://teratail.com/questions/281174 のコメントにも書きましたが、 類似の質問を繰り返されているように見えます。そしてgoqueryに期待しすぎているようにも見えます。 goqueryのクエリをどう書くかで工夫するのではなく、 基本である「どのカタマリで処理を繰り返すか、目的を果たすロジックをどう書くか」を プログラミング的思考で考えましょう。 この思考をもって目的を果たすのが先にあるほうが良いと思います。
guest

回答1

0

ベストアンサー

例えば、

  • <tr>ごとに繰り返しアクセス
  • 一個目の子<td>の値を比較
  • 条件に合った場合に二個目の子<td>を見る

とすれば実現できるのではないでしょうか。

投稿2020/09/13 12:46

nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Palo_Punte

2020/09/13 14:46

確かにそのやり方ですとできそうですね すいません 今回は指定テキストのセレクタを取得するという逆のやり方で今までのやり方ではできない事なのだと思ってしまいました >そしてgoqueryに期待しすぎているようにも見えます。 goquery以外ですとどのようなやり方があるのでしょうか?
nobonobo

2020/09/14 00:52

以前の質問もそうですがクエリセレクタで枝葉まで降りすぎています。 どの単位まで降りてどの範囲にアクセスすれば目的を果たせるのかを考えましょう。 いったんクエリセレクタなしで考えてみることをお勧めします。 クエリセレクタのないHTMLパーサーとしては https://pkg.go.dev/golang.org/x/net/html?tab=doc#example-Parse などがあります。 パースして「エレメントツリー」を取得することができますので、 「trエレメントを順に巡る->1番目の子、2番目の子を取り出す」ということはできると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問