HtmlAgilityPack 및 인증

c# html-agility-pack networkcredentials

문제

특정 URL이 주어지면 ID와 xpath를 가져 오는 메소드가 있습니다. 요청과 함께 사용자 이름과 암호를 전달하여 사용자 이름과 암호가 필요한 URL을 다룰 수 있도록하려면 어떻게해야합니까?

using HtmlAgilityPack;

_web = new HtmlWeb();

internal Dictionary<string, string> GetidsAndXPaths(string url)
{
    var webidsAndXPaths = new Dictionary<string, string>();
    var doc = _web.Load(url);
    var nodes = doc.DocumentNode.SelectNodes("//*[@id]");
    if (nodes == null) return webidsAndXPaths;
    // code to get all the xpaths and ids

웹 요청을 사용하여 페이지 소스를 얻은 다음 위의 방법으로 해당 파일을 전달해야합니까?

using HtmlAgilityPack;

_web = new HtmlWeb();

internal Dictionary<string, string> GetidsAndXPaths(string url)
{
    var webidsAndXPaths = new Dictionary<string, string>();
    var doc = _web.Load(url);
    var nodes = doc.DocumentNode.SelectNodes("//*[@id]");
    if (nodes == null) return webidsAndXPaths;
    // code to get all the xpaths and ids

수락 된 답변

HtmlWeb.Load 에는 NetworkCredential 의 인스턴스를 수락하거나 사용자 이름과 암호를 직접 전달할 수있는 많은 오버로드가 있습니다.

Name // Description 
Public method Load(String) //Gets an HTML document from an Internet resource.  
Public method Load(String, String) //Loads an HTML document from an Internet resource.  
Public method Load(String, String, WebProxy, NetworkCredential) //Loads an HTML document from an Internet resource.  
Public method Load(String, String, Int32, String, String) //Loads an HTML document from an Internet resource. 

WebProxy 인스턴스를 전달할 필요가 없으며 시스템 기본값을 전달할 수 있습니다.

또는 HtmlWeb.PreRequest 를 연결하고 요청에 대한 자격 증명을 설정할 수 있습니다.

Name // Description 
Public method Load(String) //Gets an HTML document from an Internet resource.  
Public method Load(String, String) //Loads an HTML document from an Internet resource.  
Public method Load(String, String, WebProxy, NetworkCredential) //Loads an HTML document from an Internet resource.  
Public method Load(String, String, Int32, String, String) //Loads an HTML document from an Internet resource. 



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