zoukankan      html  css  js  c++  java
  • 关于校内相册图片获取

    代码
    年前一直很忙,没机会备忘,今天上班,记一下
     
    当时是在逛校内网时看到某个相册有以前多张图片,无奈用迅雷下载的时候发现地址没规律。。。
    就随便写了个小程序,无奈对winform一窍不通,只是本着解决问题的念头做的,只是记一下获取的过程,上次用网页做了个这样的程序,不过功能实在说不过去。。。。下面是代码:
      1 using System;
      2 using System.Drawing;
      3 using System.Text;
      4 using System.Windows.Forms;
      5 using System.Net;
      6 using System.IO;
      7 using System.Text.RegularExpressions;
      8 using System.Threading;
      9 
     10 namespace WindowsApplication1
     11 {
     12     public partial class LoginForm : Form
     13     {
     14         /// <summary>
     15         /// Required designer variable.
     16         /// </summary>
     17         private System.ComponentModel.IContainer components = null;
     18         private TextBox textBox3;
     19         public CookieContainer cookiecontainer = null;
     20         string HtmlBody = "";
     21         string bstr = "";
     22         string estr = "";
     23         string u_url = "";
     24         string urlwebbrower = "";
     25         string savepath = "c:\\";
     26         Thread mythread;
     27         private TextBox textBox4;
     28         private Label label3;
     29         private Label label4;
     30         private TextBox textBox5;
     31         private Button button2;
     32         private FolderBrowserDialog folderBrowserDialog1;
     33         private ProgressBar progressBar1;
     34         private CheckBox checkBox1;
     35         private NotifyIcon notifyIcon1;
     36         private WebBrowser webBrowser1;
     37         private ContextMenuStrip contextMenuStrip1;
     38         private ToolStripMenuItem 显示ToolStripMenuItem;
     39         private ToolStripMenuItem 隐藏ToolStripMenuItem;
     40         private ToolStripMenuItem 退出ToolStripMenuItem;
     41         private System.Windows.Forms.Timer timer1;
     42         HttpWebRequest request = null;
     43 
     44         /// <summary>
     45         /// Clean up any resources being used.
     46         /// </summary>
     47         /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
     48         protected override void Dispose(bool disposing)
     49         {
     50             if (disposing && (components != null))
     51             {
     52                 components.Dispose();
     53             }
     54             base.Dispose(disposing);
     55         }
     56 
     57         #region Windows Form Designer generated code
     58 
     59         /// <summary>
     60         /// Required method for Designer support - do not modify
     61         /// the contents of this method with the code editor.
     62         /// </summary>
     63         private void InitializeComponent()
     64         {
     65             this.components = new System.ComponentModel.Container();
     66             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
     67             this.textBox1 = new System.Windows.Forms.TextBox();
     68             this.textBox2 = new System.Windows.Forms.TextBox();
     69             this.label1 = new System.Windows.Forms.Label();
     70             this.label2 = new System.Windows.Forms.Label();
     71             this.button1 = new System.Windows.Forms.Button();
     72             this.textBox3 = new System.Windows.Forms.TextBox();
     73             this.textBox4 = new System.Windows.Forms.TextBox();
     74             this.label3 = new System.Windows.Forms.Label();
     75             this.label4 = new System.Windows.Forms.Label();
     76             this.textBox5 = new System.Windows.Forms.TextBox();
     77             this.button2 = new System.Windows.Forms.Button();
     78             this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
     79             this.progressBar1 = new System.Windows.Forms.ProgressBar();
     80             this.checkBox1 = new System.Windows.Forms.CheckBox();
     81             this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
     82             this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
     83             this.显示ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
     84             this.隐藏ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
     85             this.退出ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
     86             this.webBrowser1 = new System.Windows.Forms.WebBrowser();
     87             this.timer1 = new System.Windows.Forms.Timer(this.components);
     88             this.contextMenuStrip1.SuspendLayout();
     89             this.SuspendLayout();
     90             // 
     91             // textBox1
     92             // 
     93             this.textBox1.Location = new System.Drawing.Point(7716);
     94             this.textBox1.Name = "textBox1";
     95             this.textBox1.Size = new System.Drawing.Size(10023);
     96             this.textBox1.TabIndex = 0;
     97             this.textBox1.Text = "568470306@qq.com";
     98             // 
     99             // textBox2
    100             // 
    101             this.textBox2.Location = new System.Drawing.Point(7754);
    102             this.textBox2.Name = "textBox2";
    103             this.textBox2.PasswordChar = '*';
    104             this.textBox2.Size = new System.Drawing.Size(10023);
    105             this.textBox2.TabIndex = 1;
    106             this.textBox2.Text = "qinqinppz";
    107             // 
    108             // label1
    109             // 
    110             this.label1.AutoSize = true;
    111             this.label1.Location = new System.Drawing.Point(1324);
    112             this.label1.Name = "label1";
    113             this.label1.Size = new System.Drawing.Size(5617);
    114             this.label1.TabIndex = 2;
    115             this.label1.Text = "用户名:";
    116             // 
    117             // label2
    118             // 
    119             this.label2.AutoSize = true;
    120             this.label2.Location = new System.Drawing.Point(1358);
    121             this.label2.Name = "label2";
    122             this.label2.Size = new System.Drawing.Size(5617);
    123             this.label2.TabIndex = 3;
    124             this.label2.Text = "密 码:";
    125             // 
    126             // button1
    127             // 
    128             this.button1.Location = new System.Drawing.Point(21453);
    129             this.button1.Name = "button1";
    130             this.button1.Size = new System.Drawing.Size(7523);
    131             this.button1.TabIndex = 4;
    132             this.button1.Text = "确定";
    133             this.button1.UseVisualStyleBackColor = true;
    134             this.button1.Click += new System.EventHandler(this.button1_Click);
    135             // 
    136             // textBox3
    137             // 
    138             this.textBox3.Location = new System.Drawing.Point(12123);
    139             this.textBox3.Multiline = true;
    140             this.textBox3.Name = "textBox3";
    141             this.textBox3.ScrollBars = System.Windows.Forms.ScrollBars.Both;
    142             this.textBox3.Size = new System.Drawing.Size(830236);
    143             this.textBox3.TabIndex = 6;
    144             this.textBox3.TextChanged += new System.EventHandler(this.textBox3_TextChanged);
    145             // 
    146             // textBox4
    147             // 
    148             this.textBox4.Location = new System.Drawing.Point(7690);
    149             this.textBox4.Name = "textBox4";
    150             this.textBox4.Size = new System.Drawing.Size(68123);
    151             this.textBox4.TabIndex = 8;
    152             this.textBox4.Text = "http://photo.renren.com/getalbum.do?id=347985504&owner=249664496&ref=sharenewsfee" +
    153                 "d";
    154             // 
    155             // label3
    156             // 
    157             this.label3.AutoSize = true;
    158             this.label3.Location = new System.Drawing.Point(1393);
    159             this.label3.Name = "label3";
    160             this.label3.Size = new System.Drawing.Size(5617);
    161             this.label3.TabIndex = 5;
    162             this.label3.Text = "地 址:";
    163             this.label3.Click += new System.EventHandler(this.label3_Click);
    164             // 
    165             // label4
    166             // 
    167             this.label4.AutoSize = true;
    168             this.label4.Location = new System.Drawing.Point(21321);
    169             this.label4.Name = "label4";
    170             this.label4.Size = new System.Drawing.Size(2017);
    171             this.label4.TabIndex = 9;
    172             this.label4.Text = " ";
    173             // 
    174             // textBox5
    175             // 
    176             this.textBox5.Location = new System.Drawing.Point(30715);
    177             this.textBox5.Multiline = true;
    178             this.textBox5.Name = "textBox5";
    179             this.textBox5.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
    180             this.textBox5.Size = new System.Drawing.Size(45060);
    181             this.textBox5.TabIndex = 10;
    182             // 
    183             // button2
    184             // 
    185             this.button2.Location = new System.Drawing.Point(76789);
    186             this.button2.Name = "button2";
    187             this.button2.Size = new System.Drawing.Size(7523);
    188             this.button2.TabIndex = 11;
    189             this.button2.Text = "OK";
    190             this.button2.UseVisualStyleBackColor = true;
    191             this.button2.Click += new System.EventHandler(this.button2_Click);
    192             // 
    193             // progressBar1
    194             // 
    195             this.progressBar1.Location = new System.Drawing.Point(12562);
    196             this.progressBar1.Name = "progressBar1";
    197             this.progressBar1.Size = new System.Drawing.Size(83020);
    198             this.progressBar1.Step = 1;
    199             this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
    200             this.progressBar1.TabIndex = 12;
    201             // 
    202             // checkBox1
    203             // 
    204             this.checkBox1.AutoSize = true;
    205             this.checkBox1.Location = new System.Drawing.Point(76762);
    206             this.checkBox1.Name = "checkBox1";
    207             this.checkBox1.Size = new System.Drawing.Size(7521);
    208             this.checkBox1.TabIndex = 13;
    209             this.checkBox1.Text = "保存评论";
    210             this.checkBox1.UseVisualStyleBackColor = true;
    211             // 
    212             // notifyIcon1
    213             // 
    214             this.notifyIcon1.BalloonTipText = "最小化";
    215             this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
    216             this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
    217             this.notifyIcon1.Text = "最小化";
    218             this.notifyIcon1.Visible = true;
    219             this.notifyIcon1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon1_MouseDoubleClick);
    220             // 
    221             // contextMenuStrip1
    222             // 
    223             this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
    224             this.显示ToolStripMenuItem,
    225             this.隐藏ToolStripMenuItem,
    226             this.退出ToolStripMenuItem});
    227             this.contextMenuStrip1.Name = "contextMenuStrip1";
    228             this.contextMenuStrip1.Size = new System.Drawing.Size(10170);
    229             // 
    230             // 显示ToolStripMenuItem
    231             // 
    232             this.显示ToolStripMenuItem.Name = "显示ToolStripMenuItem";
    233             this.显示ToolStripMenuItem.Size = new System.Drawing.Size(15222);
    234             this.显示ToolStripMenuItem.Text = "显示";
    235             this.显示ToolStripMenuItem.Click += new System.EventHandler(this.显示ToolStripMenuItem_Click);
    236             // 
    237             // 隐藏ToolStripMenuItem
    238             // 
    239             this.隐藏ToolStripMenuItem.Name = "隐藏ToolStripMenuItem";
    240             this.隐藏ToolStripMenuItem.Size = new System.Drawing.Size(15222);
    241             this.隐藏ToolStripMenuItem.Text = "隐藏";
    242             this.隐藏ToolStripMenuItem.Click += new System.EventHandler(this.隐藏ToolStripMenuItem_Click);
    243             // 
    244             // 退出ToolStripMenuItem
    245             // 
    246             this.退出ToolStripMenuItem.Name = "退出ToolStripMenuItem";
    247             this.退出ToolStripMenuItem.Size = new System.Drawing.Size(15222);
    248             this.退出ToolStripMenuItem.Text = "退出";
    249             this.退出ToolStripMenuItem.Click += new System.EventHandler(this.退出ToolStripMenuItem_Click);
    250             // 
    251             // webBrowser1
    252             // 
    253             this.webBrowser1.Location = new System.Drawing.Point(12365);
    254             this.webBrowser1.MinimumSize = new System.Drawing.Size(2020);
    255             this.webBrowser1.Name = "webBrowser1";
    256             this.webBrowser1.Size = new System.Drawing.Size(830191);
    257             this.webBrowser1.TabIndex = 7;
    258             // 
    259             // timer1
    260             // 
    261             this.timer1.Enabled = true;
    262             this.timer1.Interval = 1000;
    263             this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
    264             // 
    265             // LoginForm
    266             // 
    267             this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
    268             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
    269             this.BackColor = System.Drawing.SystemColors.Control;
    270             this.ClientSize = new System.Drawing.Size(851588);
    271             this.Controls.Add(this.checkBox1);
    272             this.Controls.Add(this.progressBar1);
    273             this.Controls.Add(this.button2);
    274             this.Controls.Add(this.textBox5);
    275             this.Controls.Add(this.label4);
    276             this.Controls.Add(this.textBox4);
    277             this.Controls.Add(this.webBrowser1);
    278             this.Controls.Add(this.textBox3);
    279             this.Controls.Add(this.label3);
    280             this.Controls.Add(this.button1);
    281             this.Controls.Add(this.label2);
    282             this.Controls.Add(this.label1);
    283             this.Controls.Add(this.textBox2);
    284             this.Controls.Add(this.textBox1);
    285             this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
    286             this.ForeColor = System.Drawing.SystemColors.ControlText;
    287             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
    288             this.Name = "LoginForm";
    289             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
    290             this.Text = "校内……";
    291             this.Load += new System.EventHandler(this.LoginForm_Load);
    292             this.Resize += new System.EventHandler(this.LoginForm_Resize);
    293             
    294             this.contextMenuStrip1.ResumeLayout(false);
    295             this.ResumeLayout(false);
    296             this.PerformLayout();
    297 
    298         }
    299 
    300         #endregion
    301 
    302         private System.Windows.Forms.TextBox textBox1;
    303         private System.Windows.Forms.TextBox textBox2;
    304         private System.Windows.Forms.Label label1;
    305         private System.Windows.Forms.Label label2;
    306         private System.Windows.Forms.Button button1;
    307 
    308         public LoginForm()
    309         {
    310             InitializeComponent();
    311             this.button2.Enabled = false;
    312             int count = this.Controls.Count * 2 + 2;
    313             float[] factor = new float[count];
    314             int i = 0;
    315             factor[i++= Size.Width;
    316             factor[i++= Size.Height;
    317             foreach (Control ctrl in this.Controls)
    318             {
    319                 factor[i++= ctrl.Location.X / (float)Size.Width;
    320                 factor[i++= ctrl.Location.Y / (float)Size.Height;
    321                 ctrl.Tag = ctrl.Size;
    322             }
    323             Tag = factor;
    324 
    325         }
    326         private void LoginForm_Resize(object sender, EventArgs e)
    327         {
    328             float[] scale = (float[])Tag;
    329             int i = 2;
    330 
    331             foreach (Control ctrl in this.Controls)
    332             {
    333                 ctrl.Left = (int)(Size.Width * scale[i++]);
    334                 ctrl.Top = (int)(Size.Height * scale[i++]);
    335                 ctrl.Width = (int)(Size.Width / (float)scale[0* ((Size)ctrl.Tag).Width);
    336                 ctrl.Height = (int)(Size.Height / (float)scale[1* ((Size)ctrl.Tag).Height);
    337                 //每次使用的都是最初始的控件大小,保证准确无误。
    338             }
    339         }
    340         /// <summary>
    341         /// 应用程序的主入口点。
    342         /// </summary>
    343         //[STAThread]
    344         //static void Main()
    345         //{
    346         //    Application.Run(new LoginForm());
    347         //}
    348         //获取相册详细信息
    349         private void getPhotosinf(string url)
    350         {
    351             this.folderBrowserDialog1.Description = "请选择保存输出图片的文件夹";
    352             this.folderBrowserDialog1.ShowNewFolderButton = true;
    353             this.folderBrowserDialog1.RootFolder = Environment.SpecialFolder.DesktopDirectory;
    354             DialogResult result_path = folderBrowserDialog1.ShowDialog();
    355             u_url = url;
    356             if (result_path == DialogResult.OK)
    357             {
    358                 notifyIcon1.Text = "正在下载,请稍候...";
    359                 string folderName = folderBrowserDialog1.SelectedPath;
    360                 if (folderName != "")
    361                 {
    362                     savepath = folderName;
    363                     this.Text = savepath;
    364                 }
    365                 //mythread = new Thread(new ThreadStart(DoWork));
    366                 mythread = new Thread(new ThreadStart(getData));
    367                 mythread.Start();
    368                 //getData();
    369             } 
    370         }
    371 
    372         public delegate void myDelegate(string name);
    373         //private void DoWork()
    374         //{
    375         //    myDelegate md = new myDelegate(getData);
    376         //    this.BeginInvoke(md,"11");
    377         //}
    378         //程序核心部分
    379         private void getData()
    380         {
    381             string url = u_url;
    382             string code = getHtmlCode(url);
    383             string friendname = "";
    384             string photosname = "";
    385             string photoscount = "";
    386             friendname = getinfo(code, "<input type=\"hidden\" id=\"fromname\" name=\"fromname\" id=\"fromname\" value=\"""\" />""([\\s\\S]*?)");
    387             photosname = getinfo(code, "<input type=\"hidden\" id=\"title\" name=\"title\" value=\"""\" />""([\\s\\S]*?)");
    388             photoscount = getinfo(code, "<div id=\"summary\" name=\"summary\" style=\"display:none\">""</div>""([\\s\\S]*?)");
    389             string phoinf = "相册名称:【" + photosname + "】;\n照片数量:【" + photoscount + "】; \n相册所属ID:【" + friendname + "";
    390             this.textBox5.Text = "";
    391             this.textBox5.AppendText(phoinf);
    392 
    393             MatchCollection matchs = null;
    394             this.textBox3.Text = "";
    395             int num = 0;
    396             for (int i = 0; i < (int.Parse(photoscount) + 16 - 1/ 16; i++)
    397             {
    398                 if (url.IndexOf("?"!= -1)
    399                 {
    400                     code = getHtmlCode(url + "&curpage=" + i);
    401                 }
    402                 else
    403                 {
    404                     code = getHtmlCode(url + "?curpage=" + i);
    405                 }
    406                 matchs = getinfos(code, "<span class=\"img\">\\n<a href=\"""\">""([\\s\\S]*?)");
    407                 this.textBox3.AppendText("正在获取第 " + (i + 1+ " 页\n");
    408                 
    409                 foreach (Match m in matchs)
    410                 {
    411                     num++;
    412                     code = getHtmlCode(m.Groups[1].Value);
    413                     string imgurl = getinfo(getinfo(code, "var photo = {""]};""([\\s\\S]*?)").Replace(@"\/""/"), "largeurl\":\"""\",\"summary\"""([\\s\\S]*?\\.[\\w]{3,5})");
    414                     string jutimingzi = getFilenameStr(getinfo(code, "<input type=\"hidden\" id=\"title\" name=\"title\" value=\"""\" />""([\\s\\S]*?)"));
    415                     this.textBox3.AppendText(num + "-->>\t" + imgurl + "\n");
    416                     string[] filenames = imgurl.Split('/');
    417                     string filename = savepath + "\\" + num + "_" + (i + 1+ "_" + jutimingzi + filenames[filenames.Length - 1];
    418                     if (this.checkBox1.Checked)
    419                     {
    420                         string strcontent = getUnicode(getinfo(code, "var photo = {""]};""([\\s\\S]*?)").Replace(@"\/""/"));
    421                         string strcontentfilename = filename.Split('.')[0+ ".txt";
    422                         saveFileTxt(strcontentfilename, strcontent);
    423                     }
    424                     DownloadFile(imgurl, filename);
    425                     urlwebbrower += "<img src=\"" + imgurl + "\" />";
    426 
    427                 }
    428             }
    429             this.webBrowser1.DocumentText = urlwebbrower;
    430             notifyIcon1.Text = "单击显示隐藏窗口";
    431         }
    432         //获取用户真实姓名
    433         private string realName(string htmlbody)
    434         {
    435             bstr = "<title>";
    436             estr = "</title>";
    437             string _regex = bstr+"([\\s\\S]*?)"+estr;
    438             Match titlematch = Regex.Match(htmlbody, _regex, RegexOptions.IgnoreCase | RegexOptions.Multiline);
    439             bstr = "";
    440             estr = "";
    441             return titlematch.Groups[1].Value.Trim().Split('-')[titlematch.Groups[1].Value.Trim().Split('-').Length-1];
    442         }
    443         //根据开始结束字符串得到匹配项
    444         private string getinfo(string str0, string str1, string str2, string regex)
    445         {
    446             bstr = str1;
    447             estr = str2;
    448             string _regex = bstr + regex + estr;
    449             Match match = Regex.Match(str0, _regex, RegexOptions.IgnoreCase | RegexOptions.Multiline);
    450             bstr = "";
    451             estr = "";
    452             return match.Groups[1].Value;
    453         }
    454         //根据开始结束字符串得到匹配项(集合)
    455         private MatchCollection getinfos(string str0, string str1, string str2, string regex)
    456         {
    457             bstr = str1;
    458             estr = str2;
    459             string _regex = bstr + regex + estr;
    460             //str0 = str0.Replace(@"\n", "");
    461             MatchCollection matchs = Regex.Matches(str0, _regex, RegexOptions.IgnoreCase | RegexOptions.Multiline);
    462             bstr = "";
    463             estr = "";
    464             return matchs;
    465         }
    466         //构造表单,模拟登录
    467         private string activeLogin(string username,string password,string indexurl)
    468         {
    469             cookiecontainer = null;
    470             cookiecontainer= new CookieContainer();
    471             request = (HttpWebRequest)WebRequest.Create(indexurl);
    472             string actiondata = "email=" + username + "&password=" + password;
    473             byte[] b = System.Text.Encoding.UTF8.GetBytes(actiondata);
    474             Encoding code = Encoding.GetEncoding("UTF-8");
    475             request.CookieContainer = cookiecontainer;
    476 
    477             request.Method = "POST";
    478             request.KeepAlive = false;
    479             request.ContentType = "application/x-www-form-urlencoded";
    480             request.CookieContainer = cookiecontainer;
    481             // 提交请求数据
    482             System.IO.Stream outputStream = request.GetRequestStream();
    483             outputStream.Write(b, 0, b.Length);
    484             outputStream.Close();
    485             // 接收返回的页面
    486             HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    487             StreamReader sr = new StreamReader(response.GetResponseStream(),code);
    488             string result = sr.ReadToEnd();
    489             string rl = "";
    490             while((rl   =   sr.ReadLine())!=null )
    491             {
    492                 result += rl;
    493             }
    494             foreach (Cookie cookie in response.Cookies)
    495                 cookiecontainer.Add(cookie);
    496             this.webBrowser1.Show();
    497             //this.webBrowser1.Url = response.ResponseUri;
    498             //this.webBrowser1.DocumentText = result;
    499             return "" + cookiecontainer .Count+ "" + result;
    500         }
    501 
    502         /// <summary>
    503         ///获取校内的登录页地址
    504         /// </summary>
    505         /// <param name="indexUrl"></param>
    506         /// <returns></returns>
    507         private string actionUrl(string indexUrl)
    508         {
    509             string index = indexUrl;
    510             Encoding code = Encoding.GetEncoding("UTF-8");
    511             HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.renren.com");
    512             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    513             StreamReader sr = new StreamReader(response.GetResponseStream(), code);
    514             string str = sr.ReadLine();
    515 
    516             string   hyperlink1= "<form method=\"post\" id=\"loginForm\" class=\"login-form\" action=\"http://www.renren.com/PLogin.do\" >";
    517             Regex reg = new Regex("http(s)?://([\\w]+\\.)?([\\w]+\\.)?([\\w]+)?/([\\w]+\\.)?([\\w]+)?"); 
    518             Match m=reg.Match(hyperlink1); 
    519             string a=m.Value;
    520             return a;
    521         }
    522         //获取请求的地址的源码
    523         public string getHtmlCode(String url)
    524         {
    525             request = (HttpWebRequest)WebRequest.Create(url);
    526             request.CookieContainer = cookiecontainer;
    527             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    528             Stream stream = response.GetResponseStream();
    529             StreamReader sr = new StreamReader(stream, Encoding.UTF8);
    530             String text = sr.ReadToEnd();
    531             return text;
    532         }
    533         //将评论保存为文本文件
    534         private void saveFileTxt(string filename,string strcontent)
    535         {
    536             //if (!File.Exists(filename))
    537             //{
    538             //    File.Create(filename);
    539             //}
    540             //处理评论部分的UNICODE编码
    541 
    542             string outstr = "";
    543             MatchCollection matchs = getinfos(strcontent, "\"body\":\"<span>""</span>\",\"author\"""([\\s\\S]*?)");
    544             //将评论正序输出
    545             //foreach(Match m in matchs)
    546             //{
    547             //    string _str = m.Groups[1].Value.Replace(@"\r\n", "\r\n") + "\r\n";
    548             //    _str = Regex.Replace(_str, @"</?[a-z]+[\s\S]*?/?>","");
    549             //    outstr += _str;
    550             //}
    551 
    552             //将评论倒叙输出
    553             for (int i = matchs.Count-1; i >=0;i-- )
    554             {
    555                 string _str = matchs[i].Groups[1].Value.Replace(@"\r\n""\r\n"+ "\r\n";
    556                 _str = Regex.Replace(_str, @"</?[a-z]+[\s\S]*?/?>""");
    557                 outstr += _str;
    558             }
    559             StreamWriter sw = new StreamWriter(filename);
    560             sw.Write(outstr);
    561             sw.Flush();
    562             sw.Close();
    563             sw.Dispose();
    564         }
    565         //匹配UNICODE字符串
    566         private string getUnicode(string unicodestr)
    567         {
    568             string outstr = "";
    569             for (int i = 0; i < unicodestr.Length-7;)
    570             {
    571                 string sss = unicodestr.Substring(i, 6);
    572                 if (Regex.IsMatch(unicodestr.Substring(i, 6), @"\\u[a-z0-9]{4}"))
    573                 {
    574                     outstr += unicodeToasc(unicodestr.Substring(i, 6));
    575                     i = i + 6;
    576                 }
    577                 else
    578                 {
    579                     outstr += unicodestr.Substring(i, 1);
    580                     i = i + 1;
    581                 }
    582             }
    583             return outstr;
    584         }
    585         //过滤文件名中的非法字符串,返回文件名中的前十个字符
    586         private string getFilenameStr(string _filename)
    587         {
    588             string _str = _filename;
    589             if (_str.Length >= 20)
    590             {
    591                 _str = _str.Substring(020);
    592             }
    593             _str = _str.Replace("\\"string.Empty); 
    594             _str = _str.Replace("/"string.Empty);
    595             _str = _str.Replace(":"string.Empty);
    596             _str = _str.Replace("*"string.Empty);
    597             _str = _str.Replace("?"string.Empty);
    598             _str = _str.Replace("\"", string.Empty);
    599             _str = _str.Replace("<"string.Empty);
    600             _str = _str.Replace(">"string.Empty);
    601             _str = _str.Replace("|"string.Empty);
    602             _str = _str.Replace("\r\n""");
    603             _str = _str.Replace("\n""");
    604             _str = _str.Replace("\r""");
    605             //int ii = _str.IndexOf("\r\n");
    606             _str = _str.Replace(" "string.Empty);    //前面的替换会产生空格,最后将其一并替换掉
    607             return _str;
    608         }
    609         //UNICODE字符转为中文
    610         private string unicodeToasc(string unicodestr)
    611         {
    612             unicodestr = unicodestr.Replace("\\u","\\"); 
    613             string[] value1 = unicodestr.Split('\\'); 
    614             string tempValue1 = ""
    615             string tempValue2 = ""
    616 
    617             string strOut  = "";
    618             foreach (string temp in value1)
    619             {
    620                 if (temp.Length == 0)
    621                 {
    622                     continue;
    623                 }
    624                 try
    625                 {
    626                     tempValue1 = temp;
    627                     tempValue2 = "";
    628                     if (tempValue1.Length > 4)
    629                     {
    630                         tempValue1 = temp.Substring(04);
    631                         tempValue2 = temp.Substring(4, temp.Length - 4);
    632                     }
    633                     int intASCII = Convert.ToInt32(tempValue1, 16);
    634                     strOut += ((char)intASCII).ToString() + tempValue2;
    635                 }
    636                 catch
    637                 {
    638                     strOut += temp;
    639                 }
    640             }
    641             return strOut;
    642         }
    643 
    644         /// <summary>       
    645         /// 下载文件        
    646         /// </summary>        
    647         /// <param name="URL">下载文件地址</param>        
    648         /// <param name="Filename">下载后的存放地址</param>        
    649         /// <param name="Prog">用于显示的进度条</param>        
    650         public void DownloadFile(string URL, string filename, System.Windows.Forms.ProgressBar prog)       
    651         {            
    652             try            
    653             {                               
    654                 System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);                
    655                 System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();                
    656                 long totalBytes = myrp.ContentLength;                
    657                 if (prog != null)                
    658                 {                    
    659                     prog.Maximum = (int)totalBytes;
    660                 }                
    661                 System.IO.Stream st = myrp.GetResponseStream();                
    662                 System.IO.Stream so = new System.IO.FileStream(filename, System.IO.FileMode.Create);                
    663                 long totalDownloadedByte = 0;                
    664                 byte[] by = new byte[1024];                
    665                 int osize = st.Read(by, 0, (int)by.Length);                
    666                 while (osize > 0)                
    667                 {                    
    668                     totalDownloadedByte = osize + totalDownloadedByte;                                     
    669                     so.Write(by, 0, osize);
    670                     
    671                     if (prog != null)                    
    672                     {                        
    673                         prog.Value = (int)totalDownloadedByte;                    
    674                     }                                        
    675                     osize = st.Read(by, 0, (int)by.Length);                
    676                 }
    677                 so.Flush();
    678                 so.Close();                
    679                 st.Close();            
    680             }            
    681             catch (System.Exception)            
    682             {                
    683                 throw;            
    684             }        
    685         }        
    686         /// <summary>        
    687         /// 下载文件        
    688         /// </summary>        
    689         /// <param name="URL">下载文件地址</param>        
    690         /// <param name="Filename">下载后的存放地址</param>        
    691         public void DownloadFile(string URL, string filename)        
    692         {            
    693             DownloadFile(URL, filename,this.progressBar1);        
    694         }
    695 
    696         private void label3_Click(object sender, EventArgs e)
    697         {
    698 
    699         }
    700         private void textBox3_TextChanged(object sender, EventArgs e)
    701         {
    702         
    703         }
    704 
    705         private void LoginForm_Load(object sender, EventArgs e)
    706         {
    707             notifyIcon1.Icon = new Icon("reload.ico");
    708             notifyIcon1.Visible = true;
    709             notifyIcon1.Text = "单击显示隐藏窗口";
    710         }
    711         private void button1_Click(object sender, EventArgs e)
    712         {
    713             string username = textBox1.Text;
    714             string password = textBox2.Text;
    715             HtmlBody = activeLogin(username, password, actionUrl(""));
    716             this.textBox3.Text = HtmlBody;
    717             if (cookiecontainer.Count == 9)
    718             {
    719                 this.button1.Enabled = false;
    720                 this.button2.Enabled = true;
    721             }
    722             this.label4.Text = realName(HtmlBody);
    723 
    724         }
    725         private void button2_Click(object sender, EventArgs e)
    726         {
    727             if (cookiecontainer.Count == 0)
    728             {
    729                 Form formdia = new Form();
    730                 formdia.ShowDialog();
    731 
    732                 MessageBoxButtons messButton = MessageBoxButtons.OK;
    733                 DialogResult dr = MessageBox.Show("请先登录后操作,OK ?""提示", messButton);
    734                 if (dr == DialogResult.OK)//如果点击“确定”按钮
    735                 {
    736                     this.button2.Enabled = false;
    737                     this.button1.Enabled = true;
    738                 }
    739                 else//如果点击“取消”按钮
    740                 {
    741                 }
    742             }
    743             else
    744             {
    745                 getPhotosinf(this.textBox4.Text);
    746             }
    747         }
    748 
    749         private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
    750         {
    751             if (this.Visible == true)
    752             {
    753                 this.Hide();
    754             }
    755             else
    756             {
    757                 this.Show();
    758                 this.Focus();
    759             }
    760         }
    761 
    762         private void timer1_Tick(object sender, EventArgs e)
    763         {
    764             if (notifyIcon1.Text == "单击显示隐藏窗口")
    765             {
    766                 notifyIcon1.Icon = new Icon("reload.ico");
    767                 notifyIcon1.Text = "单击显示隐藏窗口";
    768             }
    769             else
    770             {
    771                 if (notifyIcon1.Text == "正在下载,请稍候...")
    772                 {
    773                     notifyIcon1.Icon = new Icon("reload2.ico");
    774                     notifyIcon1.Text = "正在下载,请稍候..";
    775                 }
    776                 else
    777                 {
    778                     notifyIcon1.Icon = new Icon("reload.ico");
    779                     notifyIcon1.Text = "正在下载,请稍候...";
    780                 }
    781             }
    782         }
    783 
    784         private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
    785         {
    786             this.Show();
    787             this.Focus();
    788         }
    789 
    790         private void 隐藏ToolStripMenuItem_Click(object sender, EventArgs e)
    791         {
    792             this.Hide();
    793         }
    794 
    795         private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
    796         {
    797             this.Close();
    798         }
    799     }
    800 }
  • 相关阅读:
    linux dns子域授权 split分离解析 缓存dns服务器
    linux kvm虚拟机快速构建及磁盘类型
    linux虚拟化概述
    一个http请求从用户输入网址开始到结束都发生了什么
    Django lazy load 懒加载 倒序查询
    fun = [lambda x: x*i for i in range(4)] 本质解析/原理,LEGB规则 闭包原理
    linux 下mysql服务的管理
    MySQL 增删改查
    redis的应用场景 为什么用redis
    redis中的hash、列表、集合操作
  • 原文地址:https://www.cnblogs.com/pipizhu/p/1671132.html
Copyright © 2011-2022 走看看