首页 > 其他分享 >HttpClient 爬去网络数据

HttpClient 爬去网络数据

时间:2024-04-25 11:14:06浏览次数:10  
标签:string url 网络 var new 数据 response HttpClient

创建 HttpHelper类

public class HttpHelper{
  public static HttpClient Client { get; } = new HttpClient();
  /// get请求 url 请求地址
  public static async Task<string> GetHTMLByURLAsync(string url, string name="")
  {
    using (HttpClient client = new HttpClient())
    {
      string apiUrl = url+name;
      // 创建 HttpRequestMessage 对象并设置 Method 和 Content
      HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, apiUrl);
      // 设置自定义的 Header 参数
      //HttpContent hc = new StreamContent(ms);
      // 发送请求并获取响应
      HttpResponseMessage response = await client.SendAsync(request);
      if (response.IsSuccessStatusCode)
      {
        // 处理成功响应
        string responseBody = await response.Content.ReadAsStringAsync();
        return responseBody;
      }
      else return "";
    }
  }
  /// <summary>
  /// post 请求 application/json
  /// </summary>
  /// <param name="url"></param>
  /// <param name="param"></param>
  /// <returns></returns>
  public static async Task<string> HttpPost(string url,string param) {
    HttpClient Client = new HttpClient();
    var json = JsonConvert.SerializeObject(new { param });
    HttpContent content = new StringContent(json);
    content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
    HttpResponseMessage response = await Client.PostAsync(url, content);
    response.EnsureSuccessStatusCode();
    if (response.IsSuccessStatusCode)
    {
        string responseBody = await response.Content.ReadAsStringAsync();
    	return responseBody;
    }
    else return "";
  }
}

API使用

private static HtmlParser htmlParser = new HtmlParser(string url);
[HttpGet()]
public object get(){
  //获取dom
  var htmlDoc = HTTPHelper.GetHTMLByURLAsync(url).Result;
  //HTML 解析成 IDocument
  var dom = htmlParser.ParseDocument(htmlDoc);
  //QuerySelectorAll方法接受 选择器语法 
  var list= dom.QuerySelectorAll("div.className");
  List<string> urllist = new List<string>();
  foreach (var item in list)
  {
    item.QuerySelectorAll("a").ToList().ForEach(a =>
    {
      var pageUrl = a.GetAttribute("href");//获取a元素中的 href属性值
      urllist.Add(pageUrl);
     });
  }
  return urllist;
}

标签:string,url,网络,var,new,数据,response,HttpClient
From: https://www.cnblogs.com/qx-blog/p/18157149

相关文章

  • 数据结构——单向循环链表
    一、单向循环链表(一)单向循环链表的构造单向循环链表的尾结点的指针域中必须指向链表的首结点的地址1)构造单向循环链表的结点//单向循环链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造单向循环链表的结点,链表中所有结点的数据类型应该......
  • k8s网络配置
    1基础概念1.1containerPort、port、nodePort、targetPort的区别与联系containerPort:Container容器暴露的端口。containerPort是在pod控制器中定义的、pod中的容器需要暴露的端口。port:service暴露在集群中的端口,仅限集群内部访问。port是暴露在cluster(集群网络)上的端口,提......
  • C语言数据结构:链式栈及其出入栈
    /***********************************************************************************************************实现链式栈一般是以链表作为基础,一般是把链表头部作为栈顶,方便数据的插入和删除,链式栈相当于是一个单向不循环的链表。****Copyright(c)2023-2......
  • C语言数据结构:双向循环链表的增删操作
    /***********************************************************************************************************设计双向循环链表的接口****Copyright(c)[email protected]**********************************************......
  • Flink CDC全量和增量同步数据如何保证数据的一致性
    ApacheFlink的ChangeDataCapture(CDC)功能主要用于实时捕获数据库中的变更记录,并将其转换为事件流以供下游处理。为了保证全量和增量数据同步时数据的一致性、不丢失和不重复读取,FlinkCDC采用了以下策略:一、保证一致性与不丢失1、使用事务当进行全量或增量同步时,Flink......
  • 半导体晶圆厂内外网数据单向导出,什么样的方案才安全又便捷?
    半导体晶圆厂企业为了隔绝外部⽹络有害攻击、保护⽹络和数据安全,通常采⽤物理隔离的⽅式,将企业内⽹与互联⽹隔离。⽹络隔离后,基于业务开展需求,部分重要数据仍需由内⽹导⼊及导出⾄外部⽹络区域。为保障数据的安全合规性,企业需要对⽂件导出导出⾏为进⾏管控。  不少晶圆厂为......
  • 网络隔离的最小配置
    作者:任云康,青云科技研发工程师前言对于项目下的网络隔离,有用户提出了以下疑问:网络隔离是针对Pod的吗?网络隔离的最小配置是什么?配置后,哪些是可以访问的,哪些是不可以访问的?通过Ingress暴露、LB类型的Service暴露、NodePort类型的Service暴露的流量的具体链路是......
  • docker - [10] 容器数据卷
    将应用和环境打包成一个镜像,然后发布启动就成为一个容器了。 一、什么是容器数据卷  容器数据卷(ContainerDataVolumes)是Docker管理的一种特殊类型的存储区域,它为容器提供了一种持久化数据、共享数据以及与宿主机或其他容器之间进行数据交互的有效方式。  如果数据都......
  • 数据结构:双向循环链表的创建·插入·删除
    数据结构:双向循环链表的创建·插入·删除/***@filename:数据结构:双向循环链表的创建·插入·删除*@brief:实现双向循环链表的创建·插入·删除*@author :[email protected]*@date :2024/04/24*@version:1.0*@note:none*CopyRig......
  • 如果要存ip地址,用什么数据类型比较好
    在看高性能MySQL第3版(4.1.7节)时,作者建议当存储IPv4地址时,应该使用32位的无符号整数(UNSIGNEDINT)来存储IP地址,而不是使用字符串。 但是没有给出具体原因。 为了搞清楚这个原因,查了一些资料,记录下来。 相对字符串存储,使用无符号整数来存储有如下的好处: 节省空间,不管是数......