Form1.cs
上传用户:jinhuihua
上传日期:2022-08-09
资源大小:29k
文件大小:3k
源码类别:

进程与线程

开发平台:

Visual C++

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Net;
  10. using System.IO;
  11. using System.Text.RegularExpressions;
  12. namespace WebCrawler
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         public Form1()
  17.         {
  18.             InitializeComponent();
  19.         }
  20.         private void Form1_Load(object sender, EventArgs e)
  21.         {
  22.         }
  23.         //1、获取对应url的html源文件
  24.         private string GetWebContent(string Url)
  25.         {
  26.             string strResult = "";
  27.             try
  28.             {
  29.                 //声明一个HttpWebRequest请求
  30.                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
  31.                 //设置连接超时时间
  32.                 request.Timeout = 30000; 
  33.               
  34.                 request.Headers.Set("Pragma", "no-cache");
  35.                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  36.                 Stream streamReceive = response.GetResponseStream();
  37.                 Encoding encoding = Encoding.GetEncoding("GB2312");
  38.                 StreamReader streamReader = new StreamReader(streamReceive, encoding);
  39.                 strResult = streamReader.ReadToEnd();
  40.             }
  41.             catch
  42.             {
  43.                 MessageBox.Show("出错");
  44.             }
  45.             return strResult;
  46.         }
  47.         private void button1_Click(object sender, EventArgs e)
  48.         {
  49.             //要抓取的URL地址   
  50.             string Url = "http://society.people.com.cn/GB/1062/10693940.html";
  51.             //得到指定Url的源码   
  52.             string strWebContent = GetWebContent(Url);
  53.             string s = "";
  54.             /*写法一*/
  55.             //Regex patternTitle =new Regex("<DIV id="p_title">(.*?)</div>"); //C#正则表达式提取匹配URL的模式,              
  56.            //MatchCollection mc = patternTitle.Match.Matches(strWebContent);//满足pattern的匹配集合               
  57.             //foreach (Match match in mc)
  58.             //{
  59.             //    s = match.Value.ToString();
  60.             //}
  61.             //int Counter = mc.Count;
  62.             //for (int i = 0; i < Counter; i++)
  63.             //{
  64.             //    s = s + "Title" + mc[i].ToString();
  65.             //}
  66.             /*写法二*/
  67.             //2、从源文件中匹配出需要的特定文本内容
  68.             string patternTitle = "<DIV id="p_title">(.*?)</div>";
  69.             Match mc=Regex.Match(strWebContent,patternTitle);
  70.             if (mc.Success)
  71.             {
  72.                  s = mc.Groups[0].ToString();
  73.             }
  74.            int start= s.IndexOf(">");
  75.            int end = s.IndexOf("</");
  76.            s = s.Substring(start+1,end-start-1);
  77.            richTextBox1.Text = s;
  78.         }
  79.     }
  80. }