使C#爬取网站上的图片

仅仅是个示例
我的需求是:需要爬取指定路径的图片,把爬取到的图片保存到我的本地,并且在页面中显示爬取的图片。
分析:
1.假设目标网站上有反爬虫机制
2.可以使用Winform,WPF窗体程序写,我选择的是WPF。
3. 需求解决。
首先需要有页面,需要一个输入网址的TextBox输入框,以及一个Button按钮,再来个Image图片显示。
以下为XAML代码:

<!--创建新的窗体或者使用MainWindow都可以-->
 <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="80"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <TextBox x:Name="imgpath" Width="400" Height="30"/>
        <Button Click="Button_Click" Height="30" Width="100" HorizontalAlignment="Left" Margin="40,0,0,0" Content="点击获取"/>
        <Image x:Name="img" Grid.Row="1" Width="400"/>
    </Grid>

以下为C#逻辑代码:

// 创建个异步方法
public async void image()
        {
            // 目标网站的图片URL  
            string imageUrl = imgpath.Text;
            string localFilePath = "image.jpeg"; // 本地保存的文件路径   
            // 创建HttpClient实例以模拟浏览器行为  
            using (HttpClient httpClient = new HttpClient())
            {
                // 设置User-Agent为常见的浏览器标识,以避免被检测为非正常请求  
                httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36");
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("image/*")); // 指定接受的媒体类型为图片   
                try
                {
                    // 发送GET请求获取图片内容  
                    HttpResponseMessage response = await httpClient.GetAsync(imageUrl);
                    response.EnsureSuccessStatusCode(); // 确保请求成功  
                    byte[] imageBytes = await response.Content.ReadAsByteArrayAsync(); // 读取图片内容为字节数组   
                    // 将图片内容写入本地文件  
                    File.WriteAllBytes(localFilePath, imageBytes); 
                    MessageBox.Show("图片已成功爬取并保存到" + localFilePath); 
                }
                catch (HttpRequestException e)
                {
                    MessageBox.Show("请求异常"+e.Message);
                }
            }
        }
 // 点击事件
 private void Button_Click(object sender, RoutedEventArgs e)
        {
            image();
            //保存之后,读取图片
            img.Source = new BitmapImage(new Uri(imgpath.Text));
          
        }

以下为显示页面
在这里插入图片描述

目标网站图片显示
在这里插入图片描述
把网址复制到文本框中并点击获取。

在这里插入图片描述
以上就是全过程,有兴趣的可以试一下,虽然功能很鸡肋。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值