私は人形遣いを使用してウェブスクレイピングと私は、このH4要素ののinnerTextを抽出しようとしています。
<h4 class="loss">
(NA)
<br>
<span class="team-name">TEAMNAME</span>
<br>
<span class="win spoiler-wrap">0</span>
</h4>
私が使用して、この要素を取得することができています:
const teamName = await matches.$eval('h4', (h4) => h4.innerHTML);
これはTEAMNAMEを次のように設定します:
(NA)<br><span class="team-name">TEAMNAME</span><br><span class="win spoiler-wrap">0</span>
私は、各要素の唯一の内部テキストを取得しようとしています。
私が使用して(NA)を得ることができます const s = teamName.substr(0, teamName.indexOf('<'));
しかし、私はこの文字列のうち、「TEAMNAME」または「0」を取得する方法を見つけ出すように見えることはできません。私は正規表現を使用しての考えを持っているが、私はこれを実現する方法を確認していません。
私は、特定の単語を探すことができないので、PSは、内部テキストは常に同じではありません。
正規表現を使用すると、このようにそれを行うことができます。
teamName.match(/<span class="team-name">(.*)<\/span>/)[1]
match
最初の要素は全体正規表現の一致する配列を返し、2番目の要素は最初の正規表現グループの一致である、第三の要素は、第二の正規表現グループの一致(いずれも、この場合には存在しない)、等です
/.../
マークそれが見つけることができる最初の最大の試合に一致する正規表現。.
正規表現で任意の文字です。*
0発生箇所を含む文字の出現の任意の数が一致することを指定します。(...)
によって使用されている正規表現基ですmatch
。\
ので、エスケープ文字は、ある/
正規表現を開始および終了する特殊文字です。
私は非常にMozillaのドキュメントを読むことをお勧め試合と上の正規表現の詳細について。あなたは、多くの場合に有用でしょう。
しかし、人形の場合おそらく直接セレクタマッチングの方法があるh4 span
正規表現を使用するよりも簡単であろう。私はあなたにそれを行うための正確な方法を教えて人形遣いについて十分に知りません。:/