2017-05-21 16 views
0

私はHTMLAgilityPackを使用していますが、ほとんどの場合この特定のWebサイトでうまく動作しますが、XPathは値を返す必要があるときにnullを返します。私は様々なXPathを試してみましたが、うまくいきません。誰かが問題を突き止めることができれば。私はまた、Webサイトのテーブルが何か違いがあれば動的であることを指摘したい。HTMLAgilityPack - XPath - ダイナミックテーブルナル参照

XPathヘルパークロムアドオンでXPathをテストしたところ、正しい値が表示されますが、HTMLAgilityPackではnullが返されます。以下は

string Url = "http://weather.deltixlab.com"; 
HtmlWeb web = new HtmlWeb(); 
HtmlDocument doc = web.Load(Url); 

string day1 = doc.DocumentNode.SelectSingleNode("//*[@id=\"free-data-table\"]/tbody/tr[1]/td[1]").InnerText; 

HTMLのスニペットだけでなく、サイトのリンクです:http://weather.deltixlab.com

enter image description here

+0

最後からビットごとにXPathビットを減らすと、何かを返す最も長いビットは何ですか? – Tomalak

答えて

1

私は、Webページの動作原理であなたの問題を考えます。 Webソケットを介してロードした後、ページをコンテンツをホームセクションにロードします。

webbrowserコントロールを使用してページを完全にロードし、DOMを介してデータを解析する方が簡単でしょうか?

このような決定が受け入れられる場合、私はあなたのためのリトルコードを書くことができます。

+0

唯一の方法は、ページを完全にレンダリングし、xpath経由でテーブルを解析することです。最適な速度のソリューションを投稿できるのであれば、このソリューションは処理の遅延を招くと感じています。いいえ? – goodfella

+0

はい。ウェブブラウザーの場合、あなたは自分自身で遅れをとる。たとえば5秒です。いいですか?はいの場合、私は書きます。 –

+0

3秒は問題ありません。私はまた、セリニウムのようなヘッドレスブラウザを使用して他の可能な解決策を見ていますが、あなたの答えは正しい方向に私を指す必要があります – goodfella

関連する問題