将抓取页面的内容写入文本文件以在客户端浏览器上下载
Writing the contents of a scraped page to a text file to download on client's browser
我想弄清楚如何将抓取的网页内容打印到 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();
如能就此问题提供任何帮助,我们将不胜感激。我曾尝试使用其他类似的问题答案,但 none 似乎为我提供了字符串中的完整链接列表。
我通过创建从标签中读取的项目列表并逐个遍历它们解决了这个问题。
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);
}
}
我想弄清楚如何将抓取的网页内容打印到 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();
如能就此问题提供任何帮助,我们将不胜感激。我曾尝试使用其他类似的问题答案,但 none 似乎为我提供了字符串中的完整链接列表。
我通过创建从标签中读取的项目列表并逐个遍历它们解决了这个问题。
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);
}
}