博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抓取网页上的图片信息
阅读量:5302 次
发布时间:2019-06-14

本文共 2473 字,大约阅读时间需要 8 分钟。

  最近在学习的时候总结了下,发现既然js能通过元素的id去找到这个元素,那么我用c#是不是可以这样去搞呢,但是我们事先不知道他们的id,还好的是,我并非想全部去抓取某个元素里的内容,我只是想抓取某一类元素的内容,那图片来说吧,我要抓取某个网站里面的图片。

  先说下原理:利用WebBrowser类中的GetElementsByTagName(元素类型)方法我们就可以将网页中的某种类型的元素获取到,结果一集合的方式得出,例如GetElementsByTagName("img"),我们就得到图片类型的集合了。得到图片的集合后,我们再对集合里的元素进行解析,像这个<img src="http://img1.qq.com/www/xxx.gif"  />,看到了吧,有这个src我们就可以搞到东西了。

  下面面填下主要代码:

  首先我们获取网页上的所需元素集合如img:

///         /// 检查出所有图片并采集到本地        ///         public void SearchImgList()        {            //取得所有图片地址            string sImgUrl;            WebBrowser wb = new WebBrowser();            HtmlElementCollection elemColl = this.wb.Document.GetElementsByTagName("img");            this.iImgCount = elemColl.Count;            List
listsrcurl = new List
(); foreach (HtmlElement elem in elemColl) { sImgUrl = elem.GetAttribute("src"); listsrcurl.Add(sImgUrl); } }

我们将“img”元素的集合通过解析后放入listsrcurl中,集合中存放了这些img的url,通过url我们就可以去下载这些图片了

try                {                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl);                    request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)";                    request.Timeout = 100000;                                        WebResponse response = request.GetResponse();                    if (response.ContentType.ToLower().StartsWith("image/"))                    {                        Stream stream = response.GetResponseStream();                        byte[] arrayByte = new byte[1024];                        int imgLong = (int)response.ContentLength;                        int l = 0;                        FileStream fso = new FileStream(path, FileMode.Create);//path是保存地址                        while (l < imgLong)                        {                            int i = stream.Read(arrayByte, 0, 1024);                            fso.Write(arrayByte, 0, i);                            l += i;                        }                        fso.Close();                        stream.Close();                        response.Close();                                            }                    else                    {                        return ;                    }                }                catch (WebException)                {                    return ;                }

差不多这些吧,这样可以下到一些使用img标签的图片了。

 

转载于:https://www.cnblogs.com/ouzining/p/5038232.html

你可能感兴趣的文章
Asp.net窄屏页面 手机端新闻列表
查看>>
Linux 密钥验证
查看>>
windows下UDP服务器和客户端的实现
查看>>
NetAdvantage webdatagrid 控件的一些属性
查看>>
MySQL各版本的区别
查看>>
[poj1006]Biorhythms
查看>>
迭代器
查看>>
elasticsearch type类型创建时注意项目,最新的elasticsearch已经不建议一个索引下多个type...
查看>>
jQury 跳出each循环的方法
查看>>
spring AOP 之五:Spring MVC通过AOP切面编程来拦截controller
查看>>
在编译安装程序时候遇到/usr/bin/ld: cannot find -lxxx的时候的解决办法。
查看>>
使用 INSERT 和 SELECT 子查询插入行
查看>>
shell脚本解析10(练习4)------监视文件
查看>>
Java对象引用
查看>>
linux虚拟环境搭建
查看>>
随机生成20个手机号,待完善
查看>>
jquery点击复选框触发事件给input赋值
查看>>
【bzoj2161】布娃娃 权值线段树
查看>>
ubuntu重装mysql
查看>>
Python入门练习_登录
查看>>