Tengo un método para obtener ids y xpaths si se me da una url particular. ¿Cómo paso el nombre de usuario y la contraseña con la solicitud para poder eliminar una URL que requiere un nombre de usuario y una contraseña?
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
¿Debo usar una solicitud web para obtener la fuente de la página y luego pasar ese archivo al método anterior?
var wc = new WebClient();
wc.Credentials = new NetworkCredential("UserName", "Password");
wc.DownloadFile("http://somewebsite.com/page.aspx", @"C:\localfile.html");
HtmlWeb.Load
tiene una serie de sobrecargas, estas aceptan una instancia de NetworkCredential
o pueden pasar un nombre de usuario y contraseña directamente.
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.
No es necesario que pase una instancia de WebProxy
, o puede pasar la predeterminada del sistema.
Alternativamente, puede conectar el HtmlWeb.PreRequest
y configurar las credenciales para la solicitud.
htmlWeb.PreRequest += (request) => {
request.Credentials = new NetworkCredential(...);
return true;
};