首页 > 编程语言 >c#爬取图片

c#爬取图片

时间:2024-03-13 10:12:42浏览次数:32  
标签:src Console string temp c# 爬取 int WriteLine 图片

static void Main(string[] args)
{
Stopwatch stopwatch = new Stopwatch();
//图片网址
//https://www.ivsky.com/tupian/index_8.html
//string url = "https://cn.bing.com/images/search?q=%e6%84%8f%e5%a2%83%e5%9b%be%e7%89%87&qpvt=%e6%84%8f%e5%a2%83%e5%9b%be%e7%89%87&FORM=IGRE";

int temp = 0;

HttpCrawelHelper.CreatFile();
//遍历页数
for (int i =10; i < 12; i++)
{
string url = "https://www.ivsky.com/tupian/index_"+i+".html";

string path = Path.Combine(@"D:\Picture\");
HttpCrawelHelper.HttpGetHandle(url, path, 1, ref temp);
}
stopwatch.Stop();
Console.WriteLine("————-———爬取成功!—————");
Console.WriteLine("\n_______总共爬取了" + temp + "张图片!_______________");
Console.WriteLine("\n一共耗时" + stopwatch.ElapsedMilliseconds / 1000 + "秒");
//Console.ReadKey();
}

class HttpCrawelHelper
{
#region 爬取图片
public static void HttpGetHandle(string url, string path, int name,ref int temp)
{
Stopwatch stopwatch = new Stopwatch();

stopwatch.Start();
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.CreateHttp(url);
webRequest.Method = "GET";
webRequest.UserAgent = " Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0";
var webResponse = webRequest.GetResponse();
StreamReader streamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8);
string str = streamReader.ReadToEnd();
streamReader.Close();
if (string.IsNullOrEmpty(str))
{
Console.WriteLine("—错误—");
Console.ReadKey();
}
// Regex regex = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<Group>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>");
Regex regex = new Regex(@"<img[^>]+>");

WebClient client = new WebClient();
MatchCollection match = regex.Matches(str);
foreach (Match match1 in match)
{
string src = match1.Value;
//网址
int aaa = src.IndexOf('=') + 4;
int bbb = src.LastIndexOf('=') - aaa - 5;
string ccc = src.Substring(aaa, bbb);
string ddd = "https://" + ccc;
//名字
int mmm = src.LastIndexOf('=')+2;
int iii = src.LastIndexOf('>')- mmm-1;
string ggg = src.Substring(mmm, iii);
temp++;
client.DownloadFile(ddd, path + temp + ".jpg");
name++;
Console.WriteLine("\n正在爬取———" + "|" + temp);
System.Threading.Thread.Sleep(200);
}
try
{
//foreach (Match match1 in match)
//{
// string src = match1.Groups[1].Value;
// if (src.Contains("http") && !src.Contains(".svg"))
// {
// temp++;
// client.DownloadFile(src, path + name + ".jpg");
// name++;
// Console.WriteLine("\n正在爬取———" + "|" + temp);
// }
//}
}
catch (Exception ex)
{
Console.WriteLine("-------" + ex);
}

}
#endregion
#region 创建一个文件夹
public static void CreatFile()
{
if (Directory.Exists(@"D:\Picture\"))
{
Console.WriteLine("\n—————开始—————");
}
else
{
DirectoryInfo directory = new DirectoryInfo(@"D:\Picture\");
directory.Create();
}
}
#endregion
}



标签:src,Console,string,temp,c#,爬取,int,WriteLine,图片
From: https://www.cnblogs.com/jigeqiu/p/18069990

相关文章

  • docker-compose 部署nacos
    version:'3'services:#模拟一个正常的mysql数据库mysql8:image:mysql:5.7restart:alwayscontainer_name:mysqlports:-3306:3306volumes:-./databases/mysql/logs:/var/log/mysql-./databases/mysql/data:/v......
  • CH395实现FTP_Client应用(下)
    CH395实现FTP_Client例程、抓包和打印log可以在下面的博客中下载CH395实现FTP_Client应用(上)-lqlq123-博客园(cnblogs.com) 本篇是对例程流程抓包和打印日志的解析1.串口打印日志(从上电到流程结束):1SourIP:192,168,3,30,//本地IP2......
  • 使用 Keras 和 ArcGIS Pro 通过 Mask-RCNN/DeepLabV3+ 进行 EagleView 高分辨率图像语
            机器学习中的计算机视觉为GIS提供了巨大的机会。其任务包括获取、处理、分析和理解数字图像的方法,以及从现实世界中提取高维数据以产生数字或符号信息,例如以决策的形式。在过去的几年中,计算机视觉越来越多地从传统的统计方法转向最先进的深度学习神经网络技......
  • Python 分析— 使用 LeuvenMapMatching 包进行地图匹配用于道路导航
        在道路导航中,我们有了街道网络地图。轨迹/GPS数据必须与街道相匹配才能进行导航,因为GPS读数提供纯粹的纬度和经度坐标,但我们想知道车辆行驶的具体道路。        我首先尝试了一种简单的方法来匹配点,将每个点独立地匹配到最近的路段。如果没有道路,只需......
  • Failed to populate field: ‘String‘ object has no attribute
    ROS2中我们使用编译topicpub如上报错时,可以考虑检查一下命令行是否书写错误,这里我的问题是ros2topicpub/chatterstd_msgs/msg/String'data:"123"':和"之间少打了一个空格发生报错,改正后可以正常打印,问题解决ros2topicpubarg手动发布命令......
  • 什么是PLC设备数据采集?
    在当今工业4.0和智能制造的大背景下,数据的价值日益凸显。特别是对于PLC(可编程逻辑控制器)这类核心工业设备,数据采集显得尤为重要。那么,究竟什么是PLC设备数据采集?它又有何价值呢?今天,就让我们通过介绍HiWooBox,一款卓越的PLC设备数据采集工具,来为您揭开这层面纱。一、PLC设备......
  • 什么是PLC远程控制模块?
    随着工业自动化的不断发展,可编程逻辑控制器(PLC)已成为现代工业设备中不可或缺的核心组件。然而,传统的PLC管理方式往往受限于现场操作和维护,难以满足日益复杂的工业需求。在这一背景下,PLC远程控制模块应运而生,为工业设备的远程管理带来了革命性的变革。今天,我们就来深入探讨一......
  • CAP原理--一起学习吧之架构
    CAP定理为我们理解和设计分布式系统提供了重要的指导原则,它提醒我们在不同的场景下需要根据实际需求来权衡和选择一致性、可用性和分区容错性之间的平衡。二一、定义CAP定理,又被称为CAP原则,是指在一个分布式系统中,一致性(Consistency)、可用性(Availability)和分区容错性(Partitio......
  • Docker 实现类似花生壳动态域名解析
    前置条件准备工作  一,腾讯云注册的域名  二,运行Docker的服务器(我这使用的绿联云DX4600)  三,家用电信宽带,公网IP可以打客服电话申请  1.  首先申请个域名,各大云平台一般都有渠道,不备案也可以用,以下是腾讯云域名注册链接腾讯云官网 2.域名到手......
  • stm32 foc 库输出波形
    前言本文为学习st的FOC库笔记,记录FOC库实际输出的PWM波形之间的区别。关键词:SPWM,SVPWM,Overmodulation,DiscontinuousPWM标准波形输出对应Modulationflags为None可以看到,输出波形为马鞍波,即生成波形为SVPWM。对比逆克拉克变换生成的SPWM,生成的波形两者幅值相同。......