从Pastebin raw获取数据

时间:2017-06-10 10:26:05

标签: c#

我正在尝试使用表单加载,以便计算pastebin raw&中的行数。将值返回到文本框。我绞尽脑汁,仍然无法弄明白。

textBox1.Text = new WebClient().DownloadString("yourlink").

1 个答案:

答案 0 :(得分:0)

我将评论扩展到答案 如前所述,您需要HttpRequestWebRequest来获取字符串的内容。 也许是new WebClient().DownloadString(url);,但我更喜欢使用WebRequest,因为.NET Core也支持它。

您需要做的是从中提取 RAW TextArea 对象的内容。我知道,人们可能会hate me,但我使用来完成这项任务。或者,您可以使用解析器。

原始数据包含在具有以下属性的textarea中:

<textarea id="paste_code" class="paste_code" name="paste_code" onkeydown="return catchTab(this,event)">

所以模式如下所示:

private static string rgxPatternPasteBinRawContent = @"<textarea id=""paste_code"" class=""paste_code"" name=""paste_code"" onkeydown=""return catchTab\(this,event\)"">(.*)<\/textarea>";

由于代码分布在多行上,因此我们的Regex必须使用单行选项。

Regex rgx = new Regex(rgxPatternPasteBinRawContent, RegexOptions.Singleline);

现在找到包含RAW数据的匹配项:

string htmlContent = await GetHtmlContentFromPage("SomePasteBinURL");
//Possibly your new WebClient().DownloadString("SomePasteBinURL");
//await not necesseraly needed here!

Match match = rgx.Match(htmlContent);
string rawContent = "ERROR: No Raw content found!";
if (match.Groups.Count > 0)
{
    rawContent = match.Groups[1].Value;
}

int numberOfLines = rawContent.Split('\n').Length + 1;

你已经完成了。

WebRequest对我来说是这样的:

private static async Task<string> GetHtmlContentFromPage(string url)
{
    WebRequest request = WebRequest.CreateHttp(url);
    WebResponse response = await request.GetResponseAsync();
    Stream receiveStream = response.GetResponseStream();
    StreamReader readStream = null;


    readStream = new StreamReader(receiveStream);

    string data = readStream.ReadToEnd();

    response.Dispose();
    readStream.Dispose();

    return data;
}