首页 > 学院 > 开发设计 > 正文

C# 网络编程之webBrowser获取网页url和下载网页中图片

2019-11-17 02:38:07
字体:
来源:转载
供稿:网友
C# 网络编程之webBrowser获取网页url和下载网页中图片

该文章主要是通过C#网络编程的webBrowser获取网页中的url并简单的尝试瞎子啊网页中的图片,主要是为以后网络开发的基础学习.其中主要的通过应用程序结合网页知识、正则表达式实现浏览、获取url、下载图片三个功能.而且很清晰的解析了每一步都是以前一步为基础实现的.

一.界面设计

界面设计如下图所示,添加控件如图,设置webBrowser1其Anchor属性为Top、Bottom、Left、Right,实现对话框缩放;设置groupBox1其Dock(定义要绑到容器控件的边框)为Buttom,实现当浏览器缩放时groupBox1始终在最下边;设置listBox其HorizontalScrollbar属性为True,显示水平滚动条.

二.源代码

1.命名空间

//新添加命名空间  using System.Net;  using System.IO;using System.Text.RegularExPRessions;  //正则表达式

2.浏览

点击"浏览"按钮,生成button1_Click(object sender, EventArgs e)点击事件中添加如下代码,实现浏览网页:

private void button1_Click(object sender, EventArgs e){    webBrowser1.Navigate(textBox1.Text.Trim());         //显示网页}

调用webBrowser的Navigate方法将指定位置的文档加载到控件中,其中一种重载方法Navigate(urlString)将制定的统一资源定位符URL处的文档加载到WebBrowser控件中替换上一个文档.

3.获取

点击"获取"按钮,生成button2_Click(object sender, EventArgs e)点击事件中添加如下代码,通过获取"html.OuterHtml"当前网页的HTML内容,利用正则表达式获取网页中所有内容的URL超链接和图片的URL,并显示在listBox控件中.

//定义num记录listBox2中获取到的图片URL个数public int num = 0;//点击"获取"按钮private void button2_Click(object sender, EventArgs e){    HtmlElement html = webBrowser1.Document.Body;      //定义HTML元素    string str = html.OuterHtml;                       //获取当前元素的HTML代码    MatchCollection matches;                           //定义正则表达式匹配集合    //清空    listBox1.Items.Clear();    listBox2.Items.Clear();    //获取    try    {                  //正则表达式获取<a href></a>内容url        matches = Regex.Matches(str, "<a href=/"([^/"]*?)/".*?>(.*?)</a>", RegexOptions.IgnoreCase);        foreach (Match match in matches)        {            listBox1.Items.Add(match.Value.ToString());             }        //正则表达式获取<img src=>图片url        matches = Regex.Matches(str, @"<img/b[^<>]*?/bsrc[/s/t/r/n]*=[/s/t/r/n]*[""']?[/s/t/r/n]*(?<imgUrl>[^/s/t/r/n""'<>]*)[^<>]*?/?[/s/t/r/n]*>", RegexOptions.IgnoreCase);        foreach (Match match in matches)        {            listBox2.Items.Add(match.Value.ToString());        }        //记录图片总数        num = listBox2.Items.Count;    }    catch (Exception msg)    {        MessageBox.Show(msg.Message);    //异常处理    }}

其中MatchCollection Regex.Matches(string input,string pattern,RegexOption options)表示使用指定的匹配选项pattern在输入的字符串中搜索指定正则表达式的所有结果.上面RegexOptions.IgnoreCase表示不区分大小写匹配.因为下载中我会显示下载成功结果到listBox2中,所以这里使用num先计算图片总数.

4.下载

Word-spacing: 0px; white-space: normal; font-size-adju

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表