2017-11-27 12 views
1

Webサイトからノードから電話番号を取得しようとしています。何らかの理由で、クロムでノードを調べると、要素の内部の実際の数は表示されません。番号を取得しようとしているウェブサイトは、https://tempophone.com/です。間違った要素を調べているか、ノードにアクセスしてウェブサイトから電話番号を取得することはできません。ここに私のコードは、私がhtmlAgilityPackを使用しています、次のとおりです。あなたは何の電話番号がありません見ることができるようにここでHtml内の情報ノードが表示されない

 string url = "https://tempophone.com/"; 
     HtmlWeb web = new HtmlWeb(); 
     HtmlDocument doc = web.Load(url); 

     var phoneNumber = doc.DocumentNode.SelectNodes("//*[@id=\"temporary - phone\"]")[0].InnerText; 
     if(phoneNumber != null) 
      Console.WriteLine(phoneNumber); 
     else 
      Console.WriteLine("null"); 

は、検査要素のスクリーンショットです:enter image description here

答えて

2

は、まず、そのノードの内部には、テキストはありません。

第2にこれがこれです。

string s = doc.DocumentNode.SelectNodes("//*[@id='temporary-phone']")[0].GetAttributeValue("value", "false"); 

第3です。これは常に "Loading ..."を返します。ノードの属性 'value'はjavascriptを使用して更新/変更されるためです。 HtmlWebまたはHttpWebRequestを使用すると、常にページのソースを取得します。動的コンテンツをHtmlDocumentに読み込むには、WebブラウザまたはWebDriverでSeleniumを使用する必要があります。

ハウツーセレン及びFirefoxDriverと

 var driver = new FirefoxDriver(); 
     driver.Navigate().GoToUrl("https://tempophone.com/"); 
     Thread.Sleep(2000); 
     driver.FindElement(By.XPath("//button[@id='check-phone']")).Click(); 
     string s = driver.FindElement(By.XPath("//h1[@id='phone-number']")).GetAttribute("data-phone-number"); 
     Console.WriteLine("Here: " + s); 

それとも、ただどのようにあなたが彼らのAPIへのURLを見つけた

https://tempophone.com/api/v1/phones/random

+0

彼らのAPIを呼び出すことができますか? –

+0

ウェブデバッガを使用しました。 –

関連する問題