HTMLAgilityPack을 사용하여 내용을 가져 오는 가장 좋은 방법은 HTML에서 언급 할 수 있습니까?
제공된 HTML에서는 ID "img"의 value
을 긁어내어 x
및 y
값을 다른 함수에서 사용하도록 설정해야합니다.
관련 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의 함수로 전송됩니다.
submitClick(document.getElementById("img").getAttribute("value"),
document.getElementById("x").getAttribute("value"),
document.getElementById("y").getAttribute("value"),
'tiled' );
어떤 신체가 어떻게해야 하는지를 알려줌으로써 나를 도울 수 있습니까?
나에게 페이지의 HTML 데이터를 가져 오는 다음 코드를 작성했다.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "GET";
using (var stream = request.GetResponse().GetResponseStream())
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(new StringReader(result));
HtmlNode root = doc.DocumentNode;
이제 루트 매개 변수를 검색 한 다음 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 또는 월마트)를 다듬어야 할 때 매우 유용했습니다. 단점은 당신이 사용자로부터 숨길 일이 아니다, 그래서 그것이 실제 브라우저 창을 주도하고 있다는 점이다. 단점은 마우스 클릭 및 양식 필드 입력 양식을 쉽게 시뮬레이션 할 수 있다는 것입니다.