首页 > 编程语言 >使用C#编写异步爬虫程序:爬取美图录网站精美图片内容并下载到本地

使用C#编写异步爬虫程序:爬取美图录网站精美图片内容并下载到本地

时间:2024-01-09 10:01:31浏览次数:43  
标签:www 精美图片 C# 取美 client using 图片链接 string HttpClient

使用C#编写的爬虫程序,用于爬取美图录网站上的图片内容。使用了HttpClient和Json.Net库。

使用C#编写异步爬虫程序:爬取美图录网站精美图片内容并下载到本地_System

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
http://www.jshk.com.cn/mb/reg.asp?kefu=xiaoding;//爬虫IP免费获取;

class Program
{
    static void Main(string[] args)
    {
        string url = "https://www.meitu.com/pics";
        string proxyHost = "www.duoip.cn";
        int proxyPort = 8000;

        HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0");

        // 设置代理
        client.DefaultProxy = new WebProxy($"{proxyHost}:{proxyPort}");
        client.DefaultProxy.Credentials = CredentialCache.DefaultCredentials;

        // 发送GET请求
        string json = await client.GetStringAsync(url);

        // 解析JSON数据
        JObject obj = JObject.Parse(json);

        // 获取图片链接
        string picUrl = (string)obj["data"]["picUrl"];

        // 将图片链接下载到本地
        string filePath = "C:\\pic.jpg";
        await client.DownloadFileAsync(picUrl, filePath);
    }
}

在这段代码中,我们首先定义了我们要爬取的网页URL,并设置了代理信息。然后,我们创建了一个HttpClient对象,并设置其User-Agent为Mozilla/5.0,以模拟浏览器发送请求。

接着,我们使用HttpClient对象的GetStringAsync方法,发送一个GET请求到指定的URL,并获取返回的HTML内容。

然后,我们将获取的HTML内容解析为JSON格式,并获取其中的图片链接。

最后,我们将图片链接下载到本地。

标签:www,精美图片,C#,取美,client,using,图片链接,string,HttpClient
From: https://blog.51cto.com/u_16479648/9156942

相关文章

  • 【C语言高阶篇】结构体 —— 什么是内存对齐?
    (文章目录)前言  <fontcolor=green>......
  • 无涯教程-Redis - ZCARD 命令函数
    RedisZCARD命令返回指定键处存储在集合中的元素数。ZCARD-返回值返回排序集的元素数,如果键不存在,则返回0。ZCARD-语法以下是RedisZCARD命令的基本语法。redis127.0.0.1:6379>ZCARDKEY_NAMEZCARD-示例redis127.0.0.1:6379>ZADDmyset1"hello"(integer......
  • 2、ceph安装部署
    原文链接:https://blog.csdn.net/jkjgj/article/details/128785139https://blog.csdn.net/qq_63844528/article/details/130213273一、硬件monitor:16c16g 200gmgr:16c16g 200g,如果启用对象存储RGW,配置翻倍osd:16c16g ssd 万兆网卡二、ceph存储部署部署环境主......
  • C 语言文件处理全攻略:创建、写入、追加操作解析
    C语言中的文件处理在C语言中,您可以通过声明类型为FILE的指针,并使用fopen()函数来创建、打开、读取和写入文件:FILE*fptr;fptr=fopen(filename,mode);FILE基本上是一个数据类型,我们需要创建一个指针变量来使用它(fptr)。现在,这行代码并不重要。它只是在处理文件时......
  • C-学生管理系统
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>typedefstruct{ intnum; charname[64]; charsex; floatscore;}S;voidmenu(void);intShoweveryone(Ss[]);intAdd(Ss[]);intDel(Ss[]);intFind(Ss[]);intChan......
  • 刷题笔记——栈(C++)
    LCR148.验证图书取出顺序-力扣(LeetCode)现在图书馆有一堆图书需要放入书架,并且图书馆的书架是一种特殊的数据结构,只能按照 一定 的顺序 放入 和 拿取 书籍。给定一个表示图书放入顺序的整数序列 putIn,请判断序列 takeOut 是否为按照正确的顺序拿取书籍的操作序列。你可......
  • Chromium 是如何解决队头阻塞问题的
    为了解决由于单消息队列而造成的队头阻塞问题,Chromium团队从2013年到现在,花了大量的精力在持续重构底层消息机制。1、第一次迭代:引入一个高优先级队列首先在最理想的情况下,我们希望能够快速跟踪高优先级任务,比如在交互阶段,下面几种任务都应该视为高优先级的任务:通过鼠标触发的点......
  • 使用icomoon创建字体包 以及 字体的导入、导出、添加、删除
    icomoon地址https://icomoon.io/app/#/select创建字体包创建项目1、点击左上角的汉堡菜单,选择manageprojects;2、点击之后能看到所有的项目,点击newProject创建新项目3、创建完成后,点击project后的load按钮进入项目;选择左上角的newEmptyset创建新的字体集4、点击字体......
  • JavaScript Promise超详细源码解读
    Promise超详细源码解读说到promise,相信大家在日常开发中都经常使用到,它是我们异步操作中必不可少的一部分,可以让代码看起来变得更好理解;我曾在技术社区看过许多关于promise底层原理的文章,大概原理明白,这次,我准备系统的分析实现源码并记录下来,本文将一行行代码去分析最后附加流程图......
  • VNET Encryption预览
    这次介绍的功能VNETEncryption也是在Global预览的,在21v估计要等段时间,不过这个功能不需要填表来开通,属于可以直接用的。VNETEncryption顾名思义就是网络加密,正常情况下VNET内部的这些流量都是不加密的,其实对于使用没有什么影响,不过有些时候如果有比较多合规上的要求,可能会对加密......