前提・実現したいこと
javascript、puppeteerを利用してWebサイトからキーワードに前方一致する文字列を検索したいと思っています。
以下、「検索対象の構造」より、タグ<tr>中の最初と最後の列について文字列検索したいと思っているのですがその方法について苦戦しています。範囲を限定せずに検索する方法は「試したこと」に記載した通り。
下記、URLに親要素を指定して子要素のn番目を指定する方法(element.children[n])がありますが、今回の場合では親要素<tr>が複数ありますのでそのままでは利用できないようです
https://into-the-program.com/get-nth-child-element/
何かうまく利用できる方法はありますでしょうか?
その他、まったく異なる方法でも構いませんので何かアドバイスのできる方がいらっしゃいましたらお願いします。
検索対象の構造
HTML
1<tr> 2 <td class="classA">...</td> ←最初 3 <td class="classA">...</td> 4 <td class="classA">...</td> 5 <td class="classA">...</td> ←最後 6</tr> 7<tr> 8 <td class="classA">...</td> ←最初 9 <td class="classA">...</td> 10 <td class="classA">...</td> 11 <td class="classA">...</td> ←最後 12</tr> 13<tr> 14 <td class="classA">...</td> ←最初 15 <td class="classA">...</td> 16 <td class="classA">...</td> 17 <td class="classA">...</td> ←最後 18</tr>
(<tr>の要素数は不特定)
試したこと
以下のように範囲を指定しない場合の検索はquerySelectorAllを用いて可能
以下のソースでは<img>タグ中のaltの前方一致でキーワードに当てはまるものを検索している
javascript
1var kennsakuData = await page.evaluate(() => { 2 var resultList = [] 3 var nodeList = document.querySelectorAll('img[alt$="キーワード"]'); 4 nodeList.forEach(_node => { 5 resultList.push(_node.alt); 6 }) 7 return resultList; 8 });
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。