2016-09-02 40 views
1

私はこのsiteからいくつかのサッカーイベントを取得するためにHtmlAgilityPackを使用しています。htmlをクリックしてシミュレートしますか?

私がつかんでいるイベントは、Allタブの内側です。

var tableTrHeader = table.SelectNodes("//tr[@class='group-head expanded loaded ']"); 
:クラス group-head expanded loadedを持って、私はすべての可視イベントを取得し、次の時間で

string url = "http://it.soccerway.com/"; 
string data = new WebClient().DownloadString(url); 
var doc = new HtmlDocument(); 
doc.LoadHtml(data); 
var table = doc.DocumentNode.SelectSingleNode("//table[@class='matches date_matches grouped ']"); 

ので、すべてのdiv:だから、基本的に私がやったすべてのイベントは、このように配置されてテーブルを取得しています

とそれに続いて繰り返します。このすべてはうまくいくが、問題がある。事実、テーブルには他のイベントがありますが、残念ながらこれはクラスloadedがなく、単にgroup-head clickableです。

私は、クリックした行の詳細を取得するようなアクションや何かを実行するサイトのjsコードに何かがあると思います。

すべてのアイテムが展開されているhtmlを読み込むと思っていましたが、残念ながらC#で特定のターゲットhtml要素にクリックアクションを送信する方法はわかりません。私はHtmlAgilityPackがこのターゲットのために行われていないと思うが、掻き取りのためにだけだと思う​​。

誰かがこれに対応していますか?ありがとう。

+0

Windowsイベントでクリックイベントやその他の操作を行うことができます。 –

+0

Windowsフォームアプリケーションでこれを行いますか? –

+0

@LalitRajputはWindowsフォームアプリケーションではありませんが、私はWPFを使用しています。 – AgainMe

答えて

2

を私はHtmlAgilityPackは、この目標のためだけこするために行われていないこととします。

右。

誰かがこれに対応していますか?

どのように実装されているかによって大きく異なります。 JavaScriptの場合は、幸いです。おそらく、ツールチェーン全体を切り替えて、代わりにブラウザの自動化を使用する必要があります。

HTMLのクリック可能なリンクの場合は、リンクを取得して別のリクエストを行い、もう一度HtmlAgilityPackで解析します。

+0

サイト構造の参照はすべてベースですjson上で、行をクリックするとhttpリクエストが作成され、新しい詳細がロードされます。すべてがjsに基づいています。残念ながら。 – AgainMe

-2

私はこれが見つかりました:

using System; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 

public class Form1 : Form 
{ 
    [DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)] 
    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo); 

    private const int MOUSEEVENTF_LEFTDOWN = 0x02; 
    private const int MOUSEEVENTF_LEFTUP = 0x04; 
    private const int MOUSEEVENTF_RIGHTDOWN = 0x08; 
    private const int MOUSEEVENTF_RIGHTUP = 0x10; 

public Form1() 
{ 
} 

public void DoMouseClick() 
{ 
    //Call the imported function with the cursor's current position 
    int X = Cursor.Position.X; 
    int Y = Cursor.Position.Y; 
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0); 
} 

//...other code needed for the application 
} 

Hereを、見てみましょう:)

+0

いいえ、これはウィンドウのクリックをシミュレートしています。httpリクエストが送信されたときにクリックをシミュレートするものを探していますので、すべてのクラスが 'expanded loaded'でhtmlを取得できます。 – AgainMe

関連する問題