Hidistro.UI.Web/Crawler.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.IO;
using System.Net;
using System.Runtime.CompilerServices;
using System.Web;

public class Crawler
{
    public Crawler(string sourceUrl, HttpServerUtility server)
    {
        this.SourceUrl = sourceUrl;
        this.Server = server;
    }

    public Crawler Fetch()
    {
        HttpWebRequest request = WebRequest.Create(this.SourceUrl) as HttpWebRequest;
        using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
        {
            if (response.StatusCode != HttpStatusCode.OK)
            {
                this.State = string.Concat(new object[] { "Url returns ", response.StatusCode, ", ", response.StatusDescription });
                return this;
            }
            if (response.ContentType.IndexOf("image") == -1)
            {
                this.State = "Url is not an image";
                return this;
            }
            this.ServerUrl = PathFormatter.Format(Path.GetFileName(this.SourceUrl), Config.GetString("catcherPathFormat"));
            string path = this.Server.MapPath(this.ServerUrl);
            if (!Directory.Exists(Path.GetDirectoryName(path)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(path));
            }
            try
            {
                byte[] buffer;
                BinaryReader reader = new BinaryReader(response.GetResponseStream());
                using (MemoryStream stream2 = new MemoryStream())
                {
                    int num;
                    byte[] buffer2 = new byte[0x1000];
                    while ((num = reader.Read(buffer2, 0, buffer2.Length)) != 0)
                    {
                        stream2.Write(buffer2, 0, num);
                    }
                    buffer = stream2.ToArray();
                }
                System.IO.File.WriteAllBytes(path, buffer);
                this.State = "SUCCESS";
            }
            catch (Exception exception)
            {
                this.State = "抓取错误:" + exception.Message;
            }
            return this;
        }
    }

后面还有 9 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。