私はPHPの比較的初心者であり、開発しようとしているWebスクレイパースクリプトに問題があります。このスクリプトは、VBulletinフォーラムページを取得し、ページ上のハイパーリンクを解析して、特定の「id」要素を含むハイパーリンク(つまり、フォーラムに投稿されたメッセージスレッドを指すリンクのみ)を見つけるように設計されています。必要な各リンクには、「thread_title_ [Thread#here]」で始まる「id」要素が含まれています。STRPOSをフィルターとして使用して、収集されたリンクから各「id」要素を調べ、フラグメント「thread_title」が含まれているかどうかを確認するというアイデアを思いつきました。残念ながら、私の努力は実を結んでいないようです。
以下にコードの抜粋を貼り付けます...完全な初心者とラベル付けされるリスクがあります。;)うまくいけば、私はひどく愚かなことをしていません。助けてくれてありがとう
$d = new domdocument();
$d->loadHTMLfile("forum3.html");
$links = $d->getElementsByTagName('a');
echo '<html xmlns="http://www.w3.org/1999/xhtml" encoding="utf-8" lang="ar-sa">';
foreach ($links as $link)
{
$threadTitleExists = $link->getAttribute('id');
$pos = strpos($threadTitleExists, 'thread_title');
$threadTitle = $link->nodeValue;
if ($link->hasAttribute('id') && ($pos==0))
{
$threadTitle = trim(preg_replace('#/\s*\([^)]*\)/', ' ', $threadTitle));
echo "Thread number: " . $threadTitleExists . "<br>Thread title: " . $threadTitle . "<p>";
}
else
{
continue;
}
}