HTMLアジャイルパック画面XPATHがデータを返さない

c# html-agility-pack screen-scraping web-scraping

質問

私はDigikeyのスクリーンスクレーパーを作成しようとしています。このスクレーパーは、部品の販売が中止されたときに当社が価格、部品の在庫状況、製品の交換を正確に追跡できるようにします。私がChrome DevtoolsやFirefoxのFirebugで見ているXPATHと、私のC#プログラムが見ているものとの間には矛盾があるようです。

私が現在取り組んでいるページはhttp://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=296-12602-1-NDです

私が現在使用しているコードはかなり素早く汚れています...

   //This function retrieves data from the digikey
   private static List<string> ExtractProductInfo(HtmlDocument doc)
   {
       List<HtmlNode> m_unparsedProductInfoNodes = new List<HtmlNode>();
       List<string> m_unparsedProductInfo = new List<string>();

       //Base Node for part info
       string m_baseNode = @"//html[1]/body[1]/div[2]";

       //Write part info to list
       m_unparsedProductInfoNodes.Add(doc.DocumentNode.SelectSingleNode(m_baseNode + @"/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]"));
       //More lines of similar form will go here for more info
       //this retrieves digikey PN

       foreach(HtmlNode node in m_unparsedProductInfoNodes)
       {
           m_unparsedProductInfo.Add(node.InnerText);
       }

       return m_unparsedProductInfo;
   }

私が使用しているパスは "正しい"と思われますが、リスト "m_unparsedProductInfoNodes"

ここで何が起こっているか考えてみましょうか?また、baseNodeで「SelectNodes」を実行すると、ブラウザのユーザーエージェントによって異なるように見える重要な子が「cs = ####」であるdivだけが返されることを追加します。とにかく(これを識別不可能なブラウザのパスに/ cs = 0を入れて)これを使用しようとすると、私の表現がノード集合に評価されないと主張しているが、それらを残しても過去のすべてのデータdiv [2]はNULLとして返されます。

人気のある回答

ちょうど更新のために:

私はC#から少しフレンドリーなPython(プログラミングでの私の経験は、asm、c、そしてPythonで、OOの全体のことはまったく新しいものでした)に切り替え、私のxpathの問題を修正することができました。タグは本当に問題でしたが、運が良かったのはユニークなので、少し正規表現と削除された行と私は良い形でした。私はなぜそのようなタグがXPATHを壊すのか分かりません。誰かがある程度の洞察力を持っているなら、それを聞きたい。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ