使用下面的代码,我可以从维基百科获得段落,但不能获得古腾堡:
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;
}
如果我在textBoxFirstURL中输入“http://en.wikipedia.org/wiki/Web_api”,它将按预期工作:段落显示在一系列MessageBox调用中。但是,如果我输入http://www.gutenberg.org/files/19033/19033-h/19033-h.htm,我会得到:
为什么会出现这种情况,有没有办法解决它?
所谓的相同问题不仅是相同的问题,它没有答案,所以该陈述(“这个问题可能已经在这里得到答案”)不是真的,或者至少是误导性的
答案 0 :(得分:2)
Project Gutenberg会将您重定向到“欢迎陌生人”页面,如果它不能识别您之前曾在那里。据推测,这是通过使用cookie。因此,除非您的代码在执行过程中维护cookie集合,否则您将被重定向到该页面。
这是我在点击您的链接http://www.gutenberg.org/ebooks/19033?msg=welcome_stranger
时重定向到的页面如果您查看该页面的来源,您会看到其中只有一个段落标记,其中包含您在屏幕截图中显示的文字。
您还会注意到,在页面顶部的评论中,您会看到以下声明:
请勿使用此页面进行清理。
严重。你只能阻止你的IP。
请改为下载http://www.gutenberg.org/feeds/catalog.rdf.bz2 在一个RDF / XML文件中包含所有项目Gutenberg元数据。