网站管理员希望将别人的整站数据下载到自己的网站里或者将别人网站的一些内容保存到自己的服务器上。从内容中抽取相关的字段,发布到自己的网站系统中。有时需要将网页相关的文件也保存到本地,如图片、附件等。

图片采集软件能采集任何网站的各种格式图片,实现把所有文章、新闻、帖子等中间的图片全部有有序列的分类后保存到您的计算机上等功能,可以把任何论坛网站的所有帖子的图片采集到本地,轻松过滤广告等,是网站、论坛站长和喜欢收集美图的朋友的必备工具。

本文演示使用C# WebBrowser控件实现自动识别下一页,按标题分类,图片自动下载(不重复),效果如下图1所示。在随附的代码下载中提供了完整的源代码。

图1 效果图

演示程序结构

创建演示程序,我在Visual Studio 2013 选择新建C#Windows窗体应用程序命名为ImgSpider,添加Controls文件夹包含包含封装label,textbox控件;Core文件夹内有字典实体Entity用到的基类;Entity文件夹有读取配置文件dict.xml的映射类;Helper文件夹有DownLoadHelper用于下载图片,HtmlParserHelper解析HTML,XmlHelper读取XML文档;窗体文件frmAutoBorwser是程序的操作界面。图2 显示了演示程序的整体结构。

程序执行

窗体文件frmAutoBorwser

在窗体文件frmAutoBorwser使用到的控件,

第一,WebBrowser控件

WebBrowser 是一个 .NET 控件类,在 .NET Framework 2.0 版中新增。WebBrowser 类使用户可以在窗体中导航网页。使用 WebBrowser 控件可以在 Windows 窗体应用程序中承载网页以及支持浏览器的其他文档。例如,可以使用 WebBrowser 控件在应用程序中提供基于 HTML 的集成用户帮助或 Web 浏览功能。此外,还可以使用 WebBrowser 控件向 Windows 窗体客户端应用程序添加基于 Web 的现有控件。

第二,Timer 控件

通过引发 Timer 事件,Timer 控件可以有规律地隔一段时间执行一次代码。

第三,DataGridView 控件

将数据绑定到 DataGridView 控件非常简单和直观,在大多数情况下,只需设置 DataSource 属性即可。

点击采集图片按钮

WebBrowser.Navigate方法导航网页到采集的起始网址。要注意WebBrowser控件加载完成后,才可以继续采集操作。通过Timer控件有规律的间隔执行,WebBrowser控件加载完后要采集的任务。

获取当前页标题URL,判断是否已经下载

处理需要下载的标题URL,WebBrowser导航到指定URL

获取当前标题图片URL,并且WebBorwser导航到下一张图片URL

下载图片,判断是否按标题拆分,更新Access数据库

DownLoadHelper.cs文件的主要方法是

下载图片

HtmlParserHelper.cs文件的主要方法

第一,获取当前图片URL和下一张图片URL

第二,获取当前页URL和下一页URL

结束

本文演示使用C# WebBrowser控件实现图片采集软件,自动翻页,自动分类(收集美图必备工具),效果如下图1所示。在随附的代码下载中提供了完整的源代码。完整的源代码下载链接

C#图片采集软件 自动翻页 自动分类(收集美图必备工具)(一)的更多相关文章

  1. WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件

    原文:WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件 版权声明:本文为博主原创文章,需要转载尽管转载. https://blog.csdn.net/z ...

  2. ViewPager实现自动翻页功能 --转载出处找不到了,根据自己的理解写个随笔方便以后的记忆以及代码的共享,感谢给我启发的那位高手--第一次写博客哈

    xml文件 textview 用于显示图片的标题 viewpager 用于实现翻页效果 <LinearLayout xmlns:android="http://schemas.andr ...

  3. 10款无限滚动自动翻页jquery插件

    2012年3月29日 无限滚动自动翻页可以说是web2.0时代的一项堪称伟大的技术,它让我们在浏览页面的时候只需要把滚动条拉到网页底部就能自动显示下一页的 结果,改变了一直以来只能通过点击下一页来翻页 ...

  4. 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版!

    转--http://www.2cto.com/kf/201402/277535.html 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版! 2014-02-11     ...

  5. pyspider示例代码五:实现自动翻页功能

    实现自动翻页功能 示例代码一 #!/usr/bin/env python # -*- encoding: utf- -*- # Created on -- :: # Project: v2ex fro ...

  6. Python-爬虫之股转系统下载文件自动翻页

    上次代码只能抓取一个网页上的链接,本次可以自主设定抓取的页面个数. 代码如下: from selenium import webdriver import os, time class Downloa ...

  7. C# 自动翻页 PPT 测试脚本

    本文告诉大家一个可以使用的 C# 脚本,可以用来自动打开 PPT 文件,然后不断执行翻页.每次翻页都截图.翻页之后自动关闭 PPT 再次打开 最近发现给 Office 做的插件,会在一定翻页次数的时候 ...

  8. 使用Python在自己博客上进行自动翻页

    先上一张代码及代码运行后的输出结果的图! 下面上代码: # coding=utf-8 import os import time from selenium import webdriver #打开火 ...

  9. 通过js实现整屏滑动+全屏翻页+动画展示+线性图

    技术:html+css+jquery+jquery-ui.js+jquery.fullPage.js   概述 本demo主要通过html+css+js实现整屏滑动,全屏翻页并带动画的功能效果,借助于 ...

随机推荐

  1. P1015 高精度乘法

    题目描述 给你两个很大的正整数A和B,你需要计算他们的乘积. 输入格式 输入一行包含两个正整数A和B,以一个空格分隔(A和B的位数都不超过 \(10^4\)) 输出格式 输出一行包含一个整数,表示A和 ...

  2. linux seqlock 锁

    内核包含了一对新机制打算来提供快速地, 无锁地存取一个共享资源. seqlock 在这 种情况下工作, 要保护的资源小, 简单, 并且常常被存取, 并且很少写存取但是必须要快. 基本上, 它们通过允许 ...

  3. HDU - 3671 Boonie and Clyde (图的割点)

    As two icons of the Great Depression, Bonnie and Clyde represent the ultimate criminal couple. Stori ...

  4. (摘录)ISO C++ Lambda表达式

    ISO C++ 11 标准的一大亮点是引入Lambda表达式.基本语法如下: [捕获列表](形参列表) mutable ->返回值类型 复合语句 其中除了"[]"(其中捕获列 ...

  5. 基于ambassador实现K8S灰度发布

    为什么需要灰度发布 灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式.在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对 ...

  6. 嗨,让我带你逐行剖析Vue.js源码

    本项目受到了阮一峰老师的肯定,已刊登在阮一峰老师微信公众号的科技爱好者周刊第87期,同时也被多个微博大V转发,短短一个月时间内在github上star数量就已经突破2k! Hello,大家好,我最近在 ...

  7. FTP服务器红帽5.4搭建图文教程!!!

    FTP服务器搭建 服务器的环境 红帽5.4 vm15 挂载光盘 mount mount -t iso9660 设备目录 /mnt 表示挂载 软件包安装 FTP服务器安装包命令: rpm -ivh /m ...

  8. 1059 C语言竞赛 (20 分)C语言

    C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集--). 1 ...

  9. spring cloud微服务快速教程之(六) 应用监控 spring boot admin

    0-前言 当我们发布了微服务后,我们希望对各个应用的各个运行状况进行一个监控:这个时候spring boot admin,就出场了: spring boot admin:是一个监控和管理spring ...

  10. C# 阿里云查询、删除文件

    class Program { static string regionId = "cn-shanghai"; static string accessKeyId = " ...