HTML 민첩성 팩 화면 XPAS가 데이터를 반환하지 않음

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

문제

우리 회사가 부품 단종시 가격, 부품 가용성 및 제품 교체를 정확하게 추적 할 수있게 해주는 Digikey 용 스크린 스크레이퍼를 작성하려고합니다. XPath는 Chrome Devtools 에서뿐만 아니라 Firefox의 Firebug와 내 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"목록을 보면 NULL이 계속 나타납니다.

무슨 일이 벌어지고 있는거야? 또한 기본 노드에서 "SelectNodes"를 수행하면 브라우저 사용자 에이전트에 따라 달라지는 "cs = ####"인 유일한 중요한 자식이있는 div 만 반환한다고 덧붙일 것입니다. 어쨌든 (신원을 확인할 수없는 브라우저의 경로에 / cs = 0을 넣음) 이것을 사용하려고하면 내 표현이 노드 집합으로 평가되지 않는다고 주장하면서도 모든 데이터가 지나치게 문제가됩니다 div [2]는 NULL로 반환됩니다.

인기 답변

업데이트를 위해서만 :

나는 C #을 좀 더 친숙한 파이썬 (프로그래밍에 대한 나의 경험은 asm, c, 그리고 파이썬이다. 전체 OO의 것은 완전히 새로운 것임)으로 바 꾸었고 나의 xpath 문제를 바로 잡을 수 있었다. 태그는 실제로 문제 였지만 운 좋게도 독특하기 때문에 약간의 정규 표현식과 제거 된 선이 좋았습니다. 왜 그런 태그가 XPATH를 깨뜨릴 지 모르겠습니다. 누군가 통찰력이 있다면 듣고 싶습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.