IT知识库 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> .NET新手区 -> C#写爬虫,版本V1.0 -> 正文阅读

[.NET新手区]C#写爬虫,版本V1.0

C#写爬虫,版本V1.0     之前看了Sql Server中的基本数据类型,发现image这个类型还是比较特殊的。

于是乎就做了一个将图片以二进制流形式存储的程序http://www.cnblogs.com/JsonZhangAA/p/5568575.html,现在如果我想批量ed存储网上一个网站的图片,难道我要手写n多地址吗?显然这是不可取的,针对这种情况,就用C#写了一个简单的爬虫,我们所爬的对象是天文网http://www.tianwenwang.cn/

程序的原理是利用WebRequest和WebResponse来相应网站(不懂,只能这样说0.0),而后利用StreamWrite将网站的源文件存储到txt文本文件中,这是我们可以发现一个
现象,图片地址都是类似于http://p.tianwenwang.cn/upload/150318/68181426648163.jpg!list.jpg,http://p.tianwenwang.cn/upload/150312/58341426094069.jpg!list.jpg这种的,于是可以利用正则表达式来将里面的http:全部取出,放到一个字符串数组中,最后就是判断地址时候包含典型的jpg,gif等图片类型后缀了(V1.0最大的缺陷),如果包含就将其存储到数据库中。
后台代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 网络爬虫
{
    public partial class Form1 : Form
    {
        private static string[] getLinks(string html)
        {
            const string pattern = @"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
            Regex r = new Regex(pattern, RegexOptions.IgnoreCase); //新建正则模式
            MatchCollection m = r.Matches(html); //获得匹配结果
            string[] links = new string[m.Count];

            for (int i = 0; i < m.Count; i++)
            {
                links[i] = m[i].ToString(); //提取出结果
            }
            return links;
        }
        private static bool isValiable(string url)
        {
            if (url.Contains(".jpg") || url.Contains(".gif")||url.Contains(".png"))
            {
                return true; //得到一些图片之类的资源
            }
            return false;
        }
        private static void savePicture(string path)
        {
            DataClasses1DataContext db = new DataClasses1DataContext();
            Uri url = new Uri(path);
            WebRequest webRequest = WebRequest.Create(url);
            WebResponse webResponse = webRequest.GetResponse();
            
            if (isValiable(path))//判断如果是图片,就将其存储到数据库中。
            {
                Bitmap myImage = new Bitmap(webResponse.GetResponseStream());

                MemoryStream ms = new MemoryStream();
                myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                var p = new pictureUrl
                {
                    pictureUrl1 = ms.ToArray()
                };
                db.pictureUrl.InsertOnSubmit(p);
                db.SubmitChanges();
            }

        }
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string rl;
            string path = this.textBox1.Text;
            Uri url = new Uri(path);
            WebRequest webRequest = WebRequest.Create(url);
            WebResponse webResponse = webRequest.GetResponse();
            Stream resStream = webResponse.GetResponseStream();
            StreamReader sr = new StreamReader(resStream, Encoding.UTF8);
            StringBuilder sb = new StringBuilder();
            while ((rl = sr.ReadLine()) != null)
            {
                sb.Append(rl);
            }
            FileStream aFile = new FileStream("../../txt.txt", FileMode.OpenOrCreate);
            StreamWriter sw = new StreamWriter(aFile);//将网页存储到了txt文本文件中
            sw.WriteLine(sb.ToString());
            sw.Close();
            string[] s;
            s = getLinks(sb.ToString());
            int i = 0;
            foreach (string sl in s)
            {
                i++;
                savePicture(sl);
            }
        }
    }
}

本版本只能对类似于天文网的这类网站进行爬虫,我会后续升级爬虫,争取做出一个通用的爬虫O(∩_∩)O~!
上一篇文章      下一篇文章      查看所有文章
加:2016-06-13 19:01:27  更:2017-05-14 06:11:21 
 
  .NET新手区 最新文章
将ZIP文件添加到程序集资源文件然后在运行时
Web服务的调用
.NET创建WebService服务简单的例子
多线程编程学习笔记——任务并行库(三)
序列化和反序列化
Spring学习之路
多线程(2)Thread
五小步让VS Code支持AngularJS智能提示
Log4net入门(SQL篇)
C#十五子游戏
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年12日历
2018-12-17 16:48:50
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库