Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检索网页时将语言首选项传递给HtmlAgilityPack_C#_Http Headers_Console Application_Html Agility Pack_Fizzler - Fatal编程技术网

C# 检索网页时将语言首选项传递给HtmlAgilityPack

C# 检索网页时将语言首选项传递给HtmlAgilityPack,c#,http-headers,console-application,html-agility-pack,fizzler,C#,Http Headers,Console Application,Html Agility Pack,Fizzler,我的目标是从网站上读取特定的容器/标签/属性(出于我的爱好),除了获取我的值的德语翻译(我通常在浏览器中手动打开网站时获取该值)(可能是网站从用户代理获取特定信息),但如果我使用我的程序,它只会给我英语值) 工作c#控制台代码: List<string> href = new List<string>(); List<string> titles = new List<string>(); for (int i = 0; i

我的目标是从网站上读取特定的容器/标签/属性(出于我的爱好),除了获取我的值的德语翻译(我通常在浏览器中手动打开网站时获取该值)(可能是网站从用户代理获取特定信息),但如果我使用我的程序,它只会给我英语值)

工作c#控制台代码:

   List<string> href = new List<string>();
    List<string> titles = new List<string>();

    for (int i = 0; i < 1; i++)
    {
        var webOverview = new HtmlWeb();
        var documentOverview = webOverview.Load("http://gatherer.wizards.com/Pages/Search/Default.aspx?page=0&format=[%22Commander%22]");
            webOverview.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0";//updated
            webOverview.AutoDetectEncoding = true;//updated
        var pageOverview = documentOverview.DocumentNode;

        HtmlNode[] hrefList = pageOverview.QuerySelectorAll("td.leftCol").ToArray();
        HtmlNode[] titleList = pageOverview.QuerySelectorAll("div.cardInfo").ToArray();

        for (int rowcounter = 0; rowcounter < hrefList.Count(); rowcounter++)
        {
            var hrefValue = hrefList[rowcounter].QuerySelector("a").Attributes["href"].Value;
            var titleValue = titleList[rowcounter].QuerySelector("span.cardTitle").InnerText;

            href.Add(hrefValue);
            titles.Add(titleValue);
            Console.WriteLine(rowcounter.ToString() + ". " + hrefValue + ": " + titleValue + "\n\n");
        }

    }
    Console.WriteLine("Links: " + href.Count + " Titles: " + titles.Count + "\n");
但是我需要这个“Schlachthaus Ghul(屠宰场食尸鬼)”,而不仅仅是英文文本

可能是我需要这样的东西,但我在URL中找不到pramameter,它告诉服务器我希望标题信息中也包含德语


我更新了两行(注释),但它没有/没有改变任何内容。(来自

的用户代理需要向服务器发送“接受语言”标题,告知您希望看到一个德语页面:

这基本上是一个缩写:

public void Yourmethod()
{
   var webOverview = new HtmlWeb();
   webOverview.PreRequest += SendGermanLanguageHeaders;

   var documentOverview = webOverview.Load("http://gatherer.wizards.com/Pages/Search/Default.aspx?page=0&format=[%22Commander%22]");
}

private bool SendGermanLanguageHeaders(HttpWebRequest request)
{
   request.Headers.Add("Accept-Language", "de-DE");
   return true;
}

lambda构造定义了一个匿名方法,短的、内联的和上下文中的。然后使用您可能熟悉的
+=
构造将该方法添加到
PreRequest
事件处理程序列表中。

您是否尝试设置
webOverview.UserAgent
?是否能够检测编码?您可以通过webOverview进行设置。AutoDetectEncoding=true;谢谢你的帮助。我更新了它,但结果与以前一样。有很多javascript,可能是被这个javascript修改(翻译)的。当我浏览到那个页面时,我没有看到德语翻译。看到这个链接,可能是一种方式。这是什么样的结构?”webOverview.PreRequest+=(request)=>{request.Headers.Add(“接受语言”,“de-de”);return true;};“注册事件+lambda表达式…从未见过此情况…您能解释一下吗-请?
var webOverview = new HtmlWeb();
webOverview.PreRequest += (request) =>
{
    request.Headers.Add("Accept-Language", "de-DE");
    return true;
};
var documentOverview = webOverview.Load("http://gatherer.wizards.com/Pages/Search/Default.aspx?page=0&format=[%22Commander%22]");
public void Yourmethod()
{
   var webOverview = new HtmlWeb();
   webOverview.PreRequest += SendGermanLanguageHeaders;

   var documentOverview = webOverview.Load("http://gatherer.wizards.com/Pages/Search/Default.aspx?page=0&format=[%22Commander%22]");
}

private bool SendGermanLanguageHeaders(HttpWebRequest request)
{
   request.Headers.Add("Accept-Language", "de-DE");
   return true;
}