gpt4 book ai didi

c# - 为什么 HTML Agility Pack HtmlDocument.DocumentNode 为空?

转载 作者:太空狗 更新时间:2023-10-29 23:01:50 24 4
gpt4 key购买 nike

我正在使用这段代码来更改 HTML 流的 href 属性。

首先我使用这段代码下载了一个完整的html页面:(URL是网页地址)

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(URL);
HttpWebResponse myHttpWebResponse =
(HttpWebResponse)myHttpWebRequest.GetResponse();

Stream s = myHttpWebResponse.GetResponseStream();

然后我处理这个:

HtmlDocument doc = new HtmlDocument();

doc.Load(s);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("/a"))
{
string att = link.Attributes["href"].Value;
link.Attributes["href"].Value = "http://ahmadalli.somee.com/default.aspx?url=" + att;
}
doc.Save(s);

s 是 html 流。

但我有一个异常,显示 doc.DocumentNode 为空!

我尝试了很多网站,但 doc.DocumentNode 为空

最佳答案

这对我有用。

using(WebClient client = new WebClient())
{
client.Encoding = System.Text.Encoding.UTF8;
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(client.DownloadString("http://www.google.com?q=stackoverflow"));
foreach (var href in doc.DocumentNode.Descendants("a").Select(x => x.Attributes["href"]))
{
if (href == null) continue;
href.Value = "http://ahmadalli.somee.com/default.aspx?url=" + HttpUtility.UrlEncode(href.Value);
}
StringWriter writer = new StringWriter();
doc.Save(writer);
var finalHtml = writer.ToString();
}

另请参阅 HttpUtility.UrlEncode 以正确获取 url。否则,原始 url 中的某些参数可能会导致问题。

使用 HttpUtility.UrlDecode 对其进行解码。

关于c# - 为什么 HTML Agility Pack HtmlDocument.DocumentNode 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9139156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com