C# 为什么我的HtmlAgilityPack代码可以在某些站点上工作,而不能在其他站点上工作?

C# 为什么我的HtmlAgilityPack代码可以在某些站点上工作,而不能在其他站点上工作?,c#,dom,screen-scraping,html-agility-pack,wikipedia,C#,Dom,Screen Scraping,Html Agility Pack,Wikipedia,通过下面的代码,我可以从维基百科(wikipedia)获得段落,但不能从古腾堡(gutenberg)获得: private void buttonLoadHTML_Click(object sender, EventArgs e) { string url = textBoxFirstURL.Text; GetParagraphsListFromHtml(url); } public List<string> GetParagraphsListFromHtml(st

通过下面的代码,我可以从维基百科(wikipedia)获得段落,但不能从古腾堡(gutenberg)获得:

private void buttonLoadHTML_Click(object sender, EventArgs e)
{
    string url = textBoxFirstURL.Text;
    GetParagraphsListFromHtml(url);
}

public List<string> GetParagraphsListFromHtml(string sourceHtml)
{
    var pars = new List<string>();
    var getHtmlWeb = new HtmlWeb();
    var document = getHtmlWeb.Load(sourceHtml);
    var pTags = document.DocumentNode.SelectNodes("//p");
    if (pTags != null)
    {
        foreach (var pTag in pTags)
        {
            if (!string.IsNullOrWhiteSpace(pTag.InnerText))
            {
                pars.Add(pTag.InnerText);
                MessageBox.Show(pTag.InnerText);
            }
        }
    }
    MessageBox.Show("done!");
    return pars;
}
private void按钮NLOADTML\u单击(对象发送者,事件参数e)
{
字符串url=textBoxFirstURL.Text;
GetParagraphsListFromHtml(url);
}
公共列表GetParagraphsListFromHtml(字符串源HTML)
{
var pars=新列表();
var getHtmlWeb=新的HtmlWeb();
var document=getHtmlWeb.Load(sourceHtml);
var pTags=document.DocumentNode.SelectNodes(“//p”);
如果(pTags!=null)
{
foreach(pTag中的var pTag)
{
如果(!string.IsNullOrWhiteSpace(pTag.InnerText))
{
添加部分(pTag.InnerText);
MessageBox.Show(pTag.InnerText);
}
}
}
MessageBox.Show(“完成!”);
返回PAR;
}
如果我在textBoxFirstURL中输入“”,它将按预期工作:段落将在一系列MessageBox调用中显示。但是,如果我输入,我会得到以下结果:

为什么会这样?有没有办法解决这个问题

更新
假设链接到的同一个问题不仅不是同一个问题,而且没有答案,因此这种说法(“这个问题可能已经有答案了”)是不正确的,或者至少是误导性的。

如果古腾堡项目不承认你曾经去过那里,它会将你重定向到“欢迎陌生人”页面。这大概是通过使用cookie实现的。因此,除非您的代码跨执行维护cookie集合,否则您将被重定向到该页面

这是我在单击链接时重定向到的页面

如果您查看该页面的源代码,您将看到其中只有一个段落标记,它正好包含您在屏幕截图中显示的文本

您还将注意到,在页面顶部的评论中,您将看到以下通知:

不要用这一页来刮纸

真的。你只会被阻止你的IP

下载,而不是 在一个RDF/XML文件中包含所有Project Gutenberg元数据


你知道什么?看起来你是想贴点东西in@RobertLevy:是的,谢谢(更新)。@L.B:不,这是一个不同的问题;那是关于加载文件的,这是关于访问网站的。@B.ClayShannon顺便说一句:
那是关于加载文件的
这是一个简单的问题,为什么你认为你没有得到任何答案?人们不知道怎么做?这是一个糟糕的问题?@B.ClayShannon顺便说一句:这是一个经典的问题。你想做X(我们不知道),你认为它的解决方案是Y(下载页面并用
SelectNodes(“//p”)
解析它),所以你问Y,而不是X。