10

特定の 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

Web リクエストを使用してページ ソースを取得し、そのファイルを上記のメソッドに渡す必要がありますか?

var wc = new WebClient();
wc.Credentials = new NetworkCredential("UserName", "Password");
wc.DownloadFile("http://somewebsite.com/page.aspx", @"C:\localfile.html");
4

1 に答える 1

5

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または、要求の認証情報を関連付けてセットアップすることもできます。

htmlWeb.PreRequest += (request) => {
    request.Credentials = new NetworkCredential(...);
    return true;
};
于 2014-04-26T07:49:56.717 に答える