HTML 민첩성 팩을 사용한 HTML 스크래핑

ajax c# html-agility-pack web-scraping

문제

HTMLAgilityPack을 사용하여 내용을 가져 오는 가장 좋은 방법은 HTML에서 언급 할 수 있습니까?

제공된 HTML에서는 ID "img"의 value 을 긁어내어 xy 값을 다른 함수에서 사용하도록 설정해야합니다.

관련 HTML은

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

이 값은 아래 표시된 javascript의 함수로 전송됩니다.

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

어떤 신체가 어떻게해야 하는지를 알려줌으로써 나를 도울 수 있습니까?

나에게 페이지의 HTML 데이터를 가져 오는 다음 코드를 작성했다.

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

이제 루트 매개 변수를 검색 한 다음 GET으로 보내야합니다.

수락 된 답변

위의 샘플 코드에서 중단 한 부분을 선택하면 다음과 같은 값을 얻을 수 있습니다.

string imgValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"img\"]").GetAttributeValue("value", "0");
string xValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"x\"]").GetAttributeValue("value", "0");
string yValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"y\"]").GetAttributeValue("value", "0");

위의 첫 번째 예제는 기본적으로 "img"와 동일한 "id"속성을 가진 "input"유형의 첫 번째 노드를 찾고 "value"속성의 값을 가져 오는 것을 말합니다.

그런 다음 dest URL에 추가하고 Get HTML 요청을 보내면 초기 HTML을 가져옵니다.


인기 답변

원래 웹 사이트로 피드백하는 방법을 모르기 때문에 HTML 민첩성 팩을 사용하지 않을 것입니다. 대신 WatiN을 사용합니다. WatiN은 테스트 목적으로 브라우저를 구동하기 위해 만들어졌지만 내 제어 권한이없는 웹 사이트 (예 : Facebook 또는 월마트)를 다듬어야 할 때 매우 유용했습니다. 단점은 당신이 사용자로부터 숨길 일이 아니다, 그래서 그것이 실제 브라우저 창을 주도하고 있다는 점이다. 단점은 마우스 클릭 및 양식 필드 입력 양식을 쉽게 시뮬레이션 할 수 있다는 것입니다.




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