C#、Windows フォーム、および HTML Agility Pack を使用して開発された Web スクレイパーがあります。
サイトがコードを変更して壊れたとき、私はそれをすべてうまく機能させました。Webスクレーパーでよく発生することは知っていますが、現在、問題を修正する方法を理解するのに苦労しています.
この時点で、私のスクレーパーは複数の URL をループし、各ページからデータをスクレイピングします。
私が直面している問題は、ループするサイトのテンプレートが、プログラムで定義したのと同じ HTML クラスと ID を持たない新しいテンプレートをランダムに表示することです。私がやろうとしているのは、単純な if を実行して、単一のノードが null であるかどうかをチェックし、それが新しいテンプレートの別のコード セットを実行するかどうかを確認することです。
私が抱えている問題は、私のプログラムが if ステートメントで NullReferenceException をスローすることです。
nullかどうかを確認するために使用しているステートメントは次のとおりです。
var varitem = doc.DocumentNode.SelectSingleNode("//h1[@class='producttitle']").InnerText;
if (varitem == null) MessageBox.Show("no titles");
variitem を定義する最初の行で例外をスローし、if ステートメントにも到達しません。
どんなアドバイスでも大歓迎です!