iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#使用ScrapySharp快速从网页采集数据
  • 877
分享到

C#使用ScrapySharp快速从网页采集数据

2024-04-02 19:04:59 877人浏览 独家记忆
摘要

scrapySharp是一个帮助我们快速实现网页数据采集的库,它主要提供了如下两个功能 从Url获取html数据提供CSS选择器的方式解析Html节点 安装: ScrapySharp

scrapySharp是一个帮助我们快速实现网页数据采集的库,它主要提供了如下两个功能

  • 从Url获取html数据

  • 提供CSS选择器的方式解析Html节点

安装:

ScrapySharp可以直接从Nuget上下载,直接从Package Console里面输入如下命令即可:

PM> Install-Package ScrapySharp

Html下载

首先我们来看看它的Html下载功能,它是通过ScrapingBrowser类来实现的:

var browser = new ScrapingBrowser();
var html = browser.DownloadString(new Uri("Http://www.cnblogs.com/"));

这个只是一个简单的示例,实际上ScrapingBrowser的功能还是非常全面的,常见的功能如:Charset探测,AutoRedirect、Cache、 Proxy、Cookie、UserAgent、表单提交等都支持得非常好,用它来获取网页比HttClient要方便很多。

Html解析

ScrapySharp的Html解析是基于大名鼎鼎的HtmlAgilityPack来实现的,它主要提供了两个扩展函数CssSelect和CssSelect:

static IEnumerable<Htmlnode> CssSelect(this HtmlNode node, string expression);
static IEnumerable<HtmlNode> CssSelect(this IEnumerable<HtmlNode> nodes, string expression);
static IEnumerable<HtmlNode> CssSelectAncestors(this HtmlNode node, string expression);
static IEnumerable<HtmlNode> CssSelectAncestors(this IEnumerable<HtmlNode> nodes, string expression);

相比HtmlAgilityPack提供的层级式解析和Xpath方式的解析比起来,CSS选择器的更为简单快捷,这里以解析博客园的首页标题为例,首先用开发工具定位标题,可以看到其HTML结构的方式如下:

解析的代码如下:

    var doc = new HtmlDocument();
    doc.LoadHtml(html);

    var docNode = doc.DocumentNode;

    var nodes = docNode.CssSelect(".titlelnk");
    foreach (var htmlNode in nodes)
    {
        Console.WriteLine(htmlNode.InnerText);
    }

其中关键代码只有docNode.CssSelect(".titlelnk")一句,非常简洁。另外,由于CSS方式比较灵活,如下方式也能获取到标题

var nodes = docNode.CssSelect(".post_item_body > h3");
var nodes = docNode.CssSelect("div#post_list").CssSelectAncestors("h3");

最后,列举一下常用的CSS查询,以方便后续的使用:

    html.CssSelect("div"); //all div elements
    html.CssSelect("div.content"); //all div elements with css class 'content'
    html.CssSelect("div.widget.monthlist"); //all div elements with the both css class
    html.CssSelect("#postPaging"); //all HTML elements with the id postPaging
    html.CssSelect("div#postPaging.testClass");     // all HTML elements with the id postPaging and css class testClass
    html.CssSelect("div.content > p.para");     //p elements who are direct children of div elements with css class 'content'
    html.CssSelect("input[type = text].login");     // textbox with css class login

更多的CSS选择器使用方法可以参看W3的网页:CSS 选择器参考手册

到此这篇关于ScrapySharp快速采集数据的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#使用ScrapySharp快速从网页采集数据

本文链接: https://www.lsjlt.com/news/152691.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#使用ScrapySharp快速从网页采集数据
    ScrapySharp是一个帮助我们快速实现网页数据采集的库,它主要提供了如下两个功能 从Url获取Html数据提供CSS选择器的方式解析Html节点 安装: ScrapySharp...
    99+
    2024-04-02
  • 基于ASP.NET网页如何实现C#数据采集
    本篇内容主要讲解“基于ASP.NET网页如何实现C#数据采集”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于ASP.NET网页如何实现C#数据采集”吧!C#数据采集大体可以分为两部曲:一部曲:...
    99+
    2023-06-18
  • Scrapy中怎么利用Xpath选择器从网页中采集目标数据
    Scrapy中怎么利用Xpath选择器从网页中采集目标数据,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。/具体实现/1、针对标题,在上篇文章中...
    99+
    2024-04-02
  • 在Scrapy中怎么利用CSS选择器从网页中采集目标数据
    这篇文章主要介绍“在Scrapy中怎么利用CSS选择器从网页中采集目标数据”,在日常操作中,相信很多人在在Scrapy中怎么利用CSS选择器从网页中采集目标数据问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • Java网页数据采集器如何进行数据存储
    Java网页数据采集器如何进行数据存储,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。简介:作为全球运用最广泛的语言,Java 凭借它的高效性,可移植性(跨平台),代码的健壮...
    99+
    2023-06-17
  • PHP使用三种方法实现数据采集
    目录什么叫采集?PHP制作采集的技术1. 使用socket技术采集:2. 使用curl_一套函数3. 直接使用file_get_contents(最顶层的)3种方...
    99+
    2024-04-02
  • PHP实现数据分页,让网站加载速度更快
    PHP实现数据分页,让网站加载速度更快,需要具体代码示例 随着互联网的快速发展和用户需求的不断增加,网站的数据量通常都会变得非常大,大量数据的加载会导致网页加载速度变慢,影响用户体验。...
    99+
    2024-02-29
    php 数据分页 加速加载
  • 怎么用C#爬网页数据
    这篇文章主要讲解了“怎么用C#爬网页数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C#爬网页数据”吧!CSQuery1. 安装github的地址:https://github.co...
    99+
    2023-06-16
  • Python实战使用XPath采集数据示例解析
    目录lxml发送请求明确需求:解析数据保存数据lxml lxml 是 Python 的一个库,用于解析和呈现 XML 和 HTML。它支持多种内置和第三方 XML 和 HTML 标记...
    99+
    2023-05-16
    Python XPath采集数据 Python XPath
  • Dreamweaver如何使用框架结构快速制作网页
    这篇文章将为大家详细讲解有关Dreamweaver如何使用框架结构快速制作网页,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。方法如下打开Dreamweaver 软件,设置好站点,建立新文件,类型为HTML...
    99+
    2023-06-08
  • 怎么使用Prometheus采集SAP ABAP的应用日志数据
    这篇文章主要介绍“怎么使用Prometheus采集SAP ABAP的应用日志数据”,在日常操作中,相信很多人在怎么使用Prometheus采集SAP ABAP的应用日志数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-04
  • 解密ASP数据缓存:揭开快速响应网页的秘密
    ASP数据缓存是一种将经常访问的数据存储在内存中的技术,以便当下一个请求需要这些数据时,可以快速地从内存中获取,而无需再次查询数据库。这可以显著减少数据库查询的数量,从而提高网页的响应速度,增强用户体验。 ASP数据缓存的工作原理非常简...
    99+
    2024-02-04
    ASP 数据缓存 性能优化 数据库查询 网页响应速度 缓存类型 缓存依赖项 缓存数据类型 缓存管理
  • SpringBoot使用Prometheus采集自定义指标数据的方案
    目录一、我们需要什么指标二、在SrpingBoot中引入prometheus三、高级指标之分位数我们在k8s集群成功搭建了Prometheus服务。今天,我们将在springboot...
    99+
    2024-04-02
  • 大量数据采集是不是必须使用代理ip
    本篇文章给大家分享的是有关大量数据采集是不是必须使用代理ip,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。近几年互联网迅猛发展,用户量猛增。现在的互联网可以看做一个巨大的数据库...
    99+
    2023-06-02
  • 使用 Python 爬取网页数据
    1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 HTML 解析库, 可以编写出用于采集...
    99+
    2023-01-31
    网页 数据 Python
  • 在PHP中使用位运算快速计算数组交集和并集
    在 php 中,可以通过位运算符高效计算数组交集和并集:交集:使用按位与运算符 (&amp;),共同存在的元素即为交集。并集:使用按位或运算符 (|),包含所有元素即为并集。 ...
    99+
    2024-04-30
    集合 位运算
  • 使用CycleGAN训练自己制作的数据集,通俗教程,快速上手
    总结了使用CycleGAN训练自己制作的数据集,这里的教程例子主要就是官网给出的斑马变马,马变斑马,两个不同域之间的相互转换。教程中提供了官网给的源码包和我自己调试优化好的源码包,大家根据自己的情况下...
    99+
    2023-09-02
    深度学习 pytorch 人工智能 python 图像处理
  • 新手使用python采集数据的尴尬事之代理ip
    背景 , 原本不是爬虫的,因公司业务需求需要一些前程无忧的数据,被迫上岗,简单的学了些python。因为网站的特殊性,访问次数多了就要封ip,意味着还要找ip。所以在网上随便找了家代理叫亿牛云,然后跟客服沟通了下我这个小白的需求,客服跟我推...
    99+
    2023-06-02
  • 利用Python从网页抓取数据并进行分析
    在当今信息爆炸的时代,网络成为人们获取信息的主要途径之一,而数据挖掘则成为了解析这些海量数据的重要工具。Python作为一种功能强大且易于学习的编程语言,被广泛应用于网络爬虫和数据挖掘...
    99+
    2024-02-25
    python 数据挖掘 网络爬虫
  • 怎样使用Java来快速载入大数据数组?
    Java是一门强大的编程语言,拥有许多优秀的特性和工具。在处理大数据数组时,Java也提供了一些高效的方案来帮助开发者快速载入和处理数据。本文将介绍如何使用Java来快速载入大数据数组。 一、使用Java NIO(New IO)来载入大数据...
    99+
    2023-06-26
    load 大数据 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作