C# 网页图片采集

http://blog.csdn.net/a237428367/article/details/5987832

using System;

  • using System.Collections.Generic;
  • using System.Linq;
  • using System.Text;
  • using System.Text.RegularExpressions;
  • using System.Net;
  • using System.IO;
  • using System.Windows.Forms;
  • namespace ImageCollect
  • {
  • public class GatherPic
  • {
  • private string savePath;
  • private string getUrl;
  • private WebBrowser wb;
  • private int iImgCount;
  • //初始化参数
  • public GatherPic(string sWebUrl, string sSavePath)
  • {
  • this.getUrl = sWebUrl;
  • this.savePath = sSavePath;
  • }
  • //开始采集
  • public bool start()
  • {
  • if (getUrl.Trim().Equals(""))
  • {
  • MessageBox.Show("哪来的虾米连网址都没输!");
  • return false;
  • }
  • this.wb = new WebBrowser();
  • this.wb.Navigate(getUrl);
  • //委托事件
  • this.wb.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(DocumentCompleted);
  • return true;
  • }
  • //WebBrowser.DocumentCompleted委托事件
  • private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
  • {
  • //页面里框架iframe加载完成不掉用SearchImgList()
  • if (e.Url != wb.Document.Url) return;
  • SearchImgList();
  • }
  • //检查出所有图片并采集到本地
  • public void SearchImgList()
  • {
  • string sImgUrl;
  • //取得所有图片地址
  • HtmlElementCollection elemColl = this.wb.Document.GetElementsByTagName("img");
  • this.iImgCount = elemColl.Count;
  • foreach (HtmlElement elem in elemColl)
  • {
  • sImgUrl = elem.GetAttribute("src");
  • //调用保存远程图片函数
  • SaveImageFromWeb(sImgUrl, this.savePath);
  • }
  • }
  • //保存远程图片函数
  • public int SaveImageFromWeb(string imgUrl, string path)
  • {
  • string imgName = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("/") + 1);
  • path = path + "//" + imgName;
  • string defaultType = ".jpg";
  • string[] imgTypes = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" };
  • string imgType = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("."));
  • foreach (string it in imgTypes)
  • {
  • if (imgType.ToLower().Equals(it))
  • break;
  • if (it.Equals(".bmp"))
  • imgType = defaultType;
  • }
  • try
  • {
  • HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl);
  • request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)";
  • request.Timeout = 10000;
  • WebResponse response = request.GetResponse();
  • Stream stream = response.GetResponseStream();
  • if (response.ContentType.ToLower().StartsWith("image/"))
  • {
  • byte[] arrayByte = new byte[1024];
  • int imgLong = (int)response.ContentLength;
  • int l = 0;
  • // CreateDirectory(path);
  • FileStream fso = new FileStream(path, FileMode.Create);
  • while (l < imgLong)
  • {
  • int i = stream.Read(arrayByte, 0, 1024);
  • fso.Write(arrayByte, 0, i);
  • l += i;
  • }
  • fso.Close();
  • stream.Close();
  • response.Close();
  • return 1;
  • }
  • else
  • {
  • return 0;
  • }
  • }
  • catch (WebException)
  • {
  • return 0;
  • }
  • catch (UriFormatException)
  • {
  • return 0;
  • }
  • }
  • }
  • }

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Net;
using System.IO;
using System.Windows.Forms;
namespace ImageCollect
{
public class GatherPic
{
private string savePath;
private string getUrl;
private WebBrowser wb;
private int iImgCount;
//初始化参数
public GatherPic(string sWebUrl, string sSavePath)
{
this.getUrl = sWebUrl;
this.savePath = sSavePath;
}
//开始采集
public bool start()
{
if (getUrl.Trim().Equals(""))
{
MessageBox.Show("哪来的虾米连网址都没输!");
return false;
}
this.wb = new WebBrowser();
this.wb.Navigate(getUrl);
//委托事件
this.wb.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(DocumentCompleted);
return true;
}
//WebBrowser.DocumentCompleted委托事件
private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//页面里框架iframe加载完成不掉用SearchImgList()
if (e.Url != wb.Document.Url) return;
SearchImgList();
}
//检查出所有图片并采集到本地
public void SearchImgList()
{
string sImgUrl;
//取得所有图片地址
HtmlElementCollection elemColl = this.wb.Document.GetElementsByTagName("img");
this.iImgCount = elemColl.Count;
foreach (HtmlElement elem in elemColl)
{
sImgUrl = elem.GetAttribute("src");
//调用保存远程图片函数
SaveImageFromWeb(sImgUrl, this.savePath);
}
}
//保存远程图片函数
public int SaveImageFromWeb(string imgUrl, string path)
{
string imgName = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("/") + 1);
path = path + "//" + imgName;
string defaultType = ".jpg";
string[] imgTypes = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" };
string imgType = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("."));
foreach (string it in imgTypes)
{
if (imgType.ToLower().Equals(it))
break;
if (it.Equals(".bmp"))
imgType = defaultType;
}
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl);
request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)";
request.Timeout = 10000;
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
if (response.ContentType.ToLower().StartsWith("image/"))
{
byte[] arrayByte = new byte[1024];
int imgLong = (int)response.ContentLength;
int l = 0;
// CreateDirectory(path);
FileStream fso = new FileStream(path, FileMode.Create);
while (l < imgLong)
{
int i = stream.Read(arrayByte, 0, 1024);
fso.Write(arrayByte, 0, i);
l += i;
}
fso.Close();
stream.Close();
response.Close();
return 1;
}
else
{
return 0;
}
}
catch (WebException)
{
return 0;
}
catch (UriFormatException)
{
return 0;
}
}
}
}

调用方法

[c-sharp] view plain copy print?

  1. GatherPic g = new GatherPic(“http://www.baidu.com”,"E:/XXX");
  2. g.start();

=====================================================

在web项目中使用WebBrowser类-----给网站抓图

最近做一个WEB项目,其中要求有个功能就是程序能网页抓图,举个例子: 在test.aspx页面上放一个TextBox和一个Button,TextBox用来输入要抓取的网页地址,然后按了Button之后,服务器要对前面输入的网址进行抓图,然后显示出来。我把抓图的业务逻辑做成一个类:

using System; using System.Data; using System.Windows.Forms; using System.Drawing;/// <summary> /// WebSnap :网页抓图对象 /// </summary> public class WebSnap2 {    public WebSnap2()     {         //         // TODO: 在此处添加构造函数逻辑         //     }    /// <summary>     /// 开始一个抓图并返回图象     /// </summary>     /// <param name="Url">要抓取的网页地址</param>     /// <returns></returns>     public Bitmap StartSnap(string Url)     {         WebBrowser myWB = this.GetPage(Url);         Bitmap returnValue = this.SnapWeb(myWB);         myWB.Dispose();         return returnValue;     }    private WebBrowser GetPage(string Url)     {         WebBrowser myWB = new WebBrowser();         myWB.ScrollBarsEnabled = false;         myWB.Navigate(Url);         while (myWB.ReadyState != WebBrowserReadyState.Complete)         {             System.Windows.Forms.Application.DoEvents();         }         return myWB;     }    private Bitmap SnapWeb(WebBrowser wb)     {         HtmlDocument hd = wb.Document;         int height = Convert.ToInt32(hd.Body.GetAttribute("scrollHeight")) + 10;         int width = Convert.ToInt32(hd.Body.GetAttribute("scrollWidth")) + 10;         wb.Height = height;         wb.Width = width;         Bitmap bmp = new Bitmap(width, height);         Rectangle rec = new Rectangle();         rec.Width = width;         rec.Height = height;         wb.DrawToBitmap(bmp, rec);         return bmp;     }}

然后在test.asp的button_click事件里面调用:

        WebSnap ws = new WebSnap();         Bitmap bmp= ws.StartSnap(TextBox1.Text);         System.IO.MemoryStream ms = new System.IO.MemoryStream();         bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);         Response.BinaryWrite(ms.GetBuffer());
时间: 2024-10-06 14:12:34

C# 网页图片采集的相关文章

3D图片采集与展示(SurfaceView 自适应 Camera, 录制视频, 抽取帧)

      最近在做一个3D图片采集与展示. 主要功能为:自定义Camera(google 已经摈弃了Camera, 推荐使用Camera2,后续篇幅,我将会用Camera2取代Camera),围绕一个物体360度录制一个视频,然后在该视频抽取一定数量的帧,保存为图片存放.最后在一个Activity页面展示第一张图片,通过滑动或点击切换下一张图片,从而形成用图片展示的3D效果.该项目主要的目的是采集3D图片素材,然后上传到服务器处理,最终在用户客户端或网页端展示是通过OpenGL ES处理而来.

C#图片采集软件 自动翻页 自动分类(收集美图必备工具)

网站管理员希望将别人的整站数据下载到自己的网站里或者将别人网站的一些内容保存到自己的服务器上.从内容中抽取相关的字段,发布到自己的网站系统中.有时需要将网页相关的文件也保存到本地,如图片.附件等. 图片采集软件能采集任何网站的各种格式图片,实现把所有文章.新闻.帖子等中间的图片全部有有序列的分类后保存到您的计算机上等功能,可以把任何论坛网站的所有帖子的图片采集到本地,轻松过滤广告等,是网站.论坛站长和喜欢收集美图的朋友的必备工具. 本文演示使用C# WebBrowser控件实现自动识别下一页,按

一个咸鱼的Python爬虫之路(三):爬取网页图片

学完Requests库与Beautifulsoup库我们今天来实战一波,爬取网页图片.依照现在所学只能爬取图片在html页面的而不能爬取由JavaScript生成的图.所以我找了这个网站http://www.ivsky.com 网站里面有很多的图集,我们就找你的名字这个图集来爬取 http://www.ivsky.com/bizhi/yourname_v39947/ 来看看这个页面的源代码: 可以看到我们想抓取的图片信息在<li> 里面然后图片地址在img里面那么我们这里可以用Beautifu

网页图片的尺寸、分辨率、物理尺寸的理解。

1.我们通常所说的网页图片大小500*270,是指500px*270px(即图片长和宽上的像素数): 2.分辨率,指的是单位长度(物理长度)上的像素数.(网页图片最常用的分辨率是72 像素/英寸) 3.物理尺寸指的是图片实际外显时的物理尺寸(常用单位厘米或英寸) 三者关系:图片(像素)尺寸=分辨率*物理尺寸: 图片大小:200kb,即图像所占内存大小. (备注:像素不是长度单位,它是虚单位,需要分辨率这个桥梁,才能和实际物理尺寸对应)

java 抓取网页图片

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

Python -- 网络编程 -- 抓取网页图片 -- 图虫网

字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.parse.unquote() 列表去重:pages = list(set(pages)) 创建文件夹(可多级创建):os.makedirs(folder)  os.mkdir()只能单级创建 首先分析网页(图虫网)的URL规律: 根网页地址形如: http://tuchong.com/tags/人像/

使用ScrapySharp快速从网页中采集数据

转自原文 使用ScrapySharp快速从网页中采集数据 ScrapySharp是一个帮助我们快速实现网页数据采集的库,它主要提供了如下两个功能 从Url获取Html数据 提供CSS选择器的方式解析Html节点 安装: ScrapySharp可以直接从Nuget上下载,直接从Package Console里面输入如下命令即可: PM> Install-Package ScrapySharp Html下载 首先我们来看看它的Html下载功能,它是通过ScrapingBrowser类来实现的: va

Python3简单爬虫抓取网页图片

现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2),所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到大家,并希望大家批评指正. 1 import urllib.request 2 import re 3 import os 4 import urllib 5 #根据给定的网址来获取网页详细信息,得到的html就是网页的源代码 6 def getHtml(url): 7 page = urllib.r

Python爬虫 网页图片

一 概述 参考http://www.cnblogs.com/abelsu/p/4540711.html 弄了个Python捉取单一网页的图片,但是Python已经升到3+版本了.参考的已经失效,基本用不上.修改了下,重新实现网页图片捉取. 二 代码 #coding=utf-8 #urllib模块提供了读取Web页面数据的接口 import urllib #re模块主要包含了正则表达式 import re import urllib.parse import urllib.request #定义一