私はPerlを使用してサイトに接続し、そのHTMLを解析し、タグの間にあるinnerHTMLを抽出しています。高度な概念を試す前に、まず簡単な概念を試しています。
LWP :: UserAgentを使用して、サイトへのHTTP GETリクエストを作成し、応答を受信します。
次のように応答を配列に格納します。
@res = ($ua->request($req))->content;
編集:解析するHTML:
<div class="new"> this is Line 1 </div>
<div>
this is Line 2 </div>
ここで、HTTP応答の各行を解析し、タグ間のテキストを抽出します。
foreach $line(@res)
{
chomp $line;
if($line =~ /<div[^>]*?>(.*)<\/div>/)
{
$match = $1;
print OUTPUT $match."\n";
}
}
上記のコードスニペットの問題は次のとおりです。
最初に成功した一致のinnerHTMLのみに一致します。成功したすべての一致が出力されるわけではありません。理由はわかりませんが、ループは私に従って機能しているはずです。変数$matchの値は、一致が成功するたびにキャプチャバッファの内容で上書きされる必要があります。
タグが複数行にまたがっている場合、innerHTML間のテキストを抽出することはできません。最初の行に開始divタグ、次の行にinnerHTML、次の行に終了divタグがあります。
この投稿ではHTMLを書くことができないので、説明をしました。
どんな助けでもいただければ幸いです。