2017-11-19 12 views
0

これは既に回答済みの場合は謝罪しています(私に正しい場所を指摘してください)、ここでは2日間Web、YouTubeなどを検索しましたが、答えを見つけ出す。HtmlAgilityPackの掻き取り - html文書から特定のノードを抽出する

私は以下のURLからいくつかのデータを抽出したいと思います:https://betcity.ru/en/results/sp_fl=a:46;

私はその日のすべてのイベント名を取得しようとしています(1番目は ホークワンキット/ウォンチョンティン - ファンゼンドン/シュウシンとその後のすべて)。私は、クラス=「コンテンツ-結果-data__event」とし、これらのdivのからの内部テキストを取得するよりも、すべてのdivのを得ることを考えていた

<div class="content-results-data__event"><span>Ho Kwan Kit/Wong Chun Ting — Fan Zhendong/Xu Xin</span></div> 

:私はその要素を検査するとき、私は、HTMLのこの部分を見ることができます。コードを実行するたびに結果はゼロになります。そのクラスのdivが存在し、どのようにすべてのイベントを取得することができます(私はこのサイトから必要な他の情報を得ることができる方法を学ぶ場合)。ここに私のコードがあります(私はこれについてかなり新しいです)。ここで

public partial class Scrapper : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     List<string> Events = new List<string>(); 
     HtmlWeb web = new HtmlWeb(); 
     HtmlDocument doc = NewMethod(web); 
     var Nodes = doc.DocumentNode.SelectNodes(xpath: "//div[@class='content - results - data__event'']").ToList(); 

     foreach (var item in Nodes) 
     { 
      Events.Add(item.InnerText); 
     } 

     GridView1.DataSource = Events; 
     GridView1.DataBind(); 


    } 

    private static HtmlDocument NewMethod(HtmlAgilityPack.HtmlWeb web) 
    { 
     return web.Load("https://betcity.ru/en/results/sp_fl=a:46;"); 
    } 
} 

}

+1

あなたがスクラップしようとしているデータを正確に指定できますか?好ましくは、xパス全体。次に、スクリプトで更新されたコンテンツを持つウェブサイトを掻き集めるのは簡単ではありません。私はそのような場合にセレンを使用することを好む。 第3 - あなたがデータを掻き集めるのにどんな方法をとるにしても、特に変化しがちなオッズに対して計算を行う予定がある場合は遅くなるでしょう。サイトで提供されている場合でもAPIを見つけることをお勧めします。 –

+0

私はその日のすべての試合のリストを取得しようとしていました。最初は私が書いたもので、2番目のものはGerassimenko Kirill - Achanta Sharath Kamalなどです。私の最終的な目標は、すべてのイベント、スコアなどを含む個人的なデータベースを作成することでした。実行される計算があれば、SQL DBからデータが取り出されます。私のコーディングスキルを考慮して、今噛むことができる以上に噛み付いているように見えます。ご返信ありがとうございます。 –

+1

これはほとんどの人のスキルの範囲外です。まず、CharlesまたはFiddlerを使用すると、ページにデータが表示されません。 Webリクエストと結果のページが表示されます。しかし、ページ上のデータは非常に密なjavascriptsファイルによって更新されます。私はページ上でHTMLを取得するためにSeleniumのようなヘッドレスドライバでSeleniumを使用することをお勧めします。 [この回答を確認する](https://stackoverflow.com/a/47365654/1940851) –

答えて

0

セレンを使用したマッチの一日のためにHTMLを取得する方法です。残りはHtmlAgilityPackです。このサイトでは自己署名証明書を使用しているため、自己署名証明書を受け入れるようにドライバを設定する必要がありました。楽しむ。

 var ffOptions = new FirefoxOptions(); 
     ffOptions.BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"; 
     ffOptions.LogLevel = FirefoxDriverLogLevel.Default; 
     ffOptions.Profile = new FirefoxProfile { AcceptUntrustedCertificates = true }; 
     var service = FirefoxDriverService.CreateDefaultService(); 
     var driver = new FirefoxDriver(service, ffOptions, TimeSpan.FromSeconds(120)); 

     string url = "https://betcity.ru/en/results/date=2017-11-19;"; //remember to update the date accordingly. 

     driver.Navigate().GoToUrl(url); 
     Thread.Sleep(2000); 
     Console.Write(driver.PageSource); 
+0

ありがとうございました。あなたの助けを借りて進歩を遂げました。私はそれを最後まで見ることができるのだろうか。とても有難い。 –

関連する問題