0

ウェブサイトのコンテンツをスクレイピングしています。

スクレイピングしたいフィールドに、必要な正確な情報が含まれていないことに気付きました。正しい値を表示するには、ユーザーがクリックする必要があります

例 画面では、ユーザーは「メールを送信」を見ることができます。[メールを送信] をクリックすると、support@company.com に変わります。

今、「support@company.com」をスクレイピングしたいと思います。

機能した戦略の 1 つは、リンクのノードを解析することです。私は使用string.IndexOfし、string.Substring

<a href="#" onclick="displayEmail(this, 'support@company.com');......>Send Email</a>

他のオプションはありますか?

ありがとう!

4

1 に答える 1

0

特定のノードを見つけたり、HTML ドキュメント (またはフラグメント) からノードの属性値を取得したりするには、AgilityPack を使用できます。さらに、文字列から特定の情報を抽出するには、正規表現、文字列関数などを使用できます。抽出する情報の種類によって異なります。

メールアドレス、または数字だけをスクレイピングするには、正規表現を使用します (例: from here )。

以下は、提供された HTML フラグメントから電子メール アドレスを取得する方法の例です。

var regex = new Regex(
    @"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b", 
    RegexOptions.IgnoreCase
);
var html = @"<a href='#' onclick='displayEmail(this, ""support@company.com"")'>Send Email</a>";
var doc = new HtmlDocument();
doc.LoadHtml(html);

// just an example on how to get node's attribute value
// your selectors could be completely different
var onclick = doc.DocumentNode.SelectSingleNode("a").Attributes["onclick"].Value;
var email = regex.Match(onclick);
于 2012-11-13T16:44:28.193 に答える