我正在尝试弄清楚如何将抓取的网页的内容打印到Asp.Net网页上的可下载.txt文件中。我目前能够将此页面的内容打印到网页上的标签上,但无法弄清楚如何将新行中的每个值正确打印到.txt文件中,然后直接将其下载到客户端的浏览器中。目前,我的代码是用于打印到标签的以下代码:
//Read HTML of Webpage inserted into urlTextbox
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(urlTextbox.Text);
//Selecting body text
var bodySec = doc.DocumentNode.SelectNodes("//body[@class]");
foreach (var node in bodySec)
{
//Selecting ONLY links from body section
var linkSec = doc.DocumentNode.SelectNodes(".//a[@href]");
foreach (HtmlNode node2 in linkSec)
{
string attributeValue = node2.GetAttributeValue("href", "");
var baseUrl = new Uri("url.com");
var url = new Uri(baseUrl, attributeValue);
string links = url.AbsoluteUri;
scriptLbl.Text += links;
var linkLines = Regex.Split(links, @"\-\-\-");
////Printing Links line by line
foreach(string link in linkLines)
{
var prt1 = link + "<br>";
scriptLbl.Text += prt1;
}
}
}
当前,它很好地刮取了页面并以所需的格式打印链接。理想情况下,我想以相同的格式写入文件,然后单击同一按钮将其下载。我尝试使用StreamWriter来完成此操作,但是它只打印了刮取内容的第一行。以下是我使用StreamWriter的尝试:
Response.ContentType = "text/plain";
Response.AddHeader("content-disposition", "attachment;filename=Urllist.txt");
Response.Clear();
using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.UTF8))
{
writer.Write(links);
}
Response.End();
在此问题上的任何帮助将不胜感激。我曾尝试使用其他类似的问题答案,但似乎没有一个能为我提供来自字符串的链接的完整列表。
答案 0 :(得分:0)
我解决了这个问题,方法是创建一个从标签读取的项目列表,然后逐个进行遍历。
string conv = label.Text;
var result = con.Split(' ');
using(StreamWriter sw = new StreamWriter(Response.OutputStream, Encoding.UTF8))
{
foreach(var s in result.Distinct())
{
//using distinct to ensure no repeated items (scraping multiple pages w/ same links possible)
sw.WriteLine(s);
}
}