我需要通过网址创建简报。我接下来要做的事情:
我该怎么做?
最好的问候,Alex。
答案 0 :(得分:6)
解决此任务的一种可能方法是使用HtmlAgilityPack库。
一些示例(修复链接):
WebClient client = new WebClient();
byte[] requestHTML = client.DownloadData(sourceUrl);
string sourceHTML = new UTF8Encoding().GetString(requestHTML);
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(sourceHTML);
foreach (HtmlNode link in htmlDoc.DocumentNode.SelectNodes("//a[@href]"))
{
if (!string.IsNullOrEmpty(link.Attributes["href"].Value))
{
HtmlAttribute att = link.Attributes["href"];
att.Value = this.AbsoluteUrlByRelative(att.Value);
}
}
答案 1 :(得分:2)
如果请求来自您的网站(相同的域名链接),那么您可以使用:
new Uri(Request.Uri, "/img/welcome.png").ToString();
如果您使用的是非网络应用,或者您想对域名进行硬编码:
new Uri("http://www.mysite.com", "/img/welcome.png").ToString();
答案 2 :(得分:0)
你有一些选择:
Console.Write(ControlChars.Cr + "Please enter a Url(for example, http://www.msn.com): ") Dim remoteUrl As String = Console.ReadLine() Dim myWebClient As New WebClient() Console.WriteLine(("Downloading " + remoteUrl)) Dim myDatabuffer As Byte() = myWebClient.DownloadData(remoteUrl) Dim download As String = Encoding.ASCII.GetString(myDataBuffer) download.Replace("src=""/", "src=""" & remoteUrl & "/") download.Replace("href=""/", "href=""" & remoteUrl & "/") Console.WriteLine(download) Console.WriteLine("Download successful.")
这是超级人为的,实际上它主要是直接来自:http://msdn.microsoft.com/en-us/library/xz398a3f.aspx,但它说明了方法1背后的基本原理。
答案 3 :(得分:0)
只需使用此功能
'# converts relative URL ro Absolute URI
Function RelativeToAbsoluteUrl(ByVal baseURI As Uri, ByVal RelativeUrl As String) As Uri
' get action tags, relative or absolute
Dim uriReturn As Uri = New Uri(RelativeUrl, UriKind.RelativeOrAbsolute)
' Make it absolute if it's relative
If Not uriReturn.IsAbsoluteUri Then
Dim baseUrl As Uri = baseURI
uriReturn = New Uri(baseUrl, uriReturn)
End If
Return uriReturn
End Function
答案 4 :(得分:0)
您可以尝试使用href-attrib =相关的原始baseURI来设置base-element,而不是解析/完成相对路径。
作为header-element的第一个子元素,所有后续相对路径应由浏览器解析为指向原始目标,而不是doc(newsletter)所在的位置。
在firefox上,获取/设置所有src / href-attribs的一些重复(< -in正式逻辑)来回恢复将COMPLETE路径写入html-doc的所有层(序列化),因此可编写脚本,可保存...:
var d=document;
var n= d.querySelectorAll('[src]'); // do the same for [href] ...
var i=0; var op ="";var ops="";
for (i=0;i<n.length;i++){op = op + n[i].src + "\n";ops=n[i].src;
n[i].src=ops;}
alert(op);
当然,url() - func基于STYLE-Element(s, - 用于background-img或content-rules)以及在节点级别的style-attrib,特别是url( )-func-stated src / href-values不被上述任何解决方案考虑/测试。
因此,要使base-Elem方法进入有效的,经过测试的(compat-list)状态,对我来说似乎是更有希望的概念。