基于网络抓取创建新文件,然后下载到客户的浏览器?

时间:2018-07-16 15:45:27

标签: c# asp.net file streamwriter

我正在Asp.Net中创建一个网站,并使用它来抓取另一个网页。我的目标是使用抓取页面的链接创建一个新文件。我能够成功刮取页面并将文本打印到页面上的标签上,但是我似乎无法使页面将数据写入新的文本文件并下载具有所有链接的新文件。目前,我以以下方式使用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); 
    //links is the string of the scraped URL's I want on the text file
}
Response.End();

当前,这仅将第一行写入新的文本文件。

如何从链接字符串中获取所有URL以打印在新文本文件上?如果可能的话,我不想对本地计算机执行任何操作,也不必使用本地文件路径,而只是让站点将具有正确内容的新文件写入用户的下载文件中。

用于内存流的代码如下:

MemoryStream ms = new MemoryStream();
TextWriter tw = new StreamWriter(ms);
foreach(var lk in linkLines)
{
    var prt = lk + "\r\n";
    tw.WriteLine(prt);
}
tw.Flush();
var bytes = ms.GetBuffer();
Response.ClearContent();
Response.AddHeader("Content-Disposition", "attachment; filename=Urllist.txt");
Response.AddHeader("Content-Length", bytes.Length.ToString());
Response.ContentType = "text/plain";
Response.BinaryWrite(bytes);

但是此代码仅提供第一个链接,然后由于某种原因还包括来自网页的HTML进行抓取。

请帮助!

0 个答案:

没有答案