只需几分钟,就能用 C# 制作 Web Scraper!
Suciu Dan,2022 年 10 月 12 日
自古以来,人们就知道收集信息的重要性,而那些利用信息为自己谋利的人也因此兴旺发达。
如今,我们可以通过使用搜索工具更方便快捷地做到这一点,而创建自己的搜索工具也并非难事。您可以更快地收集线索,同时关注竞争对手和自己的品牌,并在投资创意之前了解更多信息。
说到这里,你可能已经知道了。
如果你有兴趣了解更多有关网络搜索的信息,或者想知道如何用 C# 制作工具,那就跟我一起去吧!
网络搜索合法吗?
只要你想搜刮的网站同意,这种做法就是合法的。您可以通过在 URL 地址中添加"/robots.txt"(如http://httpbin.org/robots.txt)并阅读权限,或查看其 TOS 部分来确认。
什么是使用 c sharp 进行网络搜索?
网络搜索是一种自动化技术,各种规模的公司都会使用它来提取数据,用于各种目的,如价格优化或收集电子邮件。研究人员利用网络搜索收集数据报告和统计数据,开发人员则获取大量数据用于机器学习。
它是如何工作的?对于大多数网络搜刮工具来说,你所需要做的就是指定你希望提取数据的网站 URL。根据搜刮工具的能力,它会以结构化的方式提取网页信息,供你以任何方式进行解析和操作。
需要注意的是,有些刮擦工具只查看页面的 HTML 内容,无法查看动态网页的信息。在这种情况下,需要使用更复杂的网络搜刮工具来完成工作。
使用网络搜刮工具非常有用,因为它可以减少你通常花在这项任务上的时间。手动复制和粘贴数据听起来并不是一件有趣的事情。想想看,要获得大量数据来训练人工智能需要花费多少时间!如果您有兴趣进一步了解数据提取的作用,请看一看!
让我们看看如何在短短几分钟内创建我们的网络搜刮工具。
用 C# 创建自己的网络搜索器
在本教程中,我将向您展示如何用 C# 编写网络刮刀。我知道使用不同的编程语言(如Python)会对这项任务更有利,但这并不意味着用 C# 无法完成这项任务。
使用 C# 编码有其优势,例如
- 它是面向对象的;
- 具有更好的完整性和互操作性;
- 它是一个跨平台;
1.选择要搜索的页面
首先,您需要确定要搜索的网页。在本例中,我将搜索维基百科上的希腊,看看其目录中包含哪些主题。这是一个简单的例子,但你也可以将其扩展到其他网页。
2.检查网站代码
使用开发工具,你可以检查每个元素,查看你需要的信息在哪个标签下。只需右击网页并选择 "检查",就会弹出一个 "浏览器检查框"。

您可以直接在元素部分或使用网页上的检查工具搜索类,如下图所示。

因此,您发现所需的数据位于类为toctext 的 span 标记中。接下来要做的就是提取整个页面的 HTML,对其进行解析,然后只选择该特定类中的数据。让我们先做一些简单的准备工作!
3.准备工作空间
您可以使用任何适合自己的集成开发环境。在本例中,我将使用Visual Studio Code。您还需要安装.NET SDK。
现在,您需要创建项目。为此,您显然需要打开 Visual Studio Code。然后,进入扩展菜单,安装 C# for Visual Studio Code。

你需要一个地方来编写和运行我们的代码。在菜单栏中,选择 "文件">"打开文件"(macOS 上为 "文件">"打开..."),然后在对话框中创建一个文件夹,作为我们的工作区。
创建工作场所后,在项目终端输入以下命令即可创建一个简单的 "Hello World "应用程序模板:
dotnet 新控制台
新项目应该是这样的

接下来,您需要安装这两个软件包:
- HtmlAgilityPack是一个用 C# 编写的 HTML 解析器,用于读/写 DOM。
- CsvHelper是一个用于读写 CSV 文件的软件包。
您可以在项目终端使用这些命令行安装它们:
dotnet add package csvhelper
dotnet add package htmlagilitypack
4.编写代码
让我们导入几分钟前安装的软件包,以及其他一些有用的软件包,以便以后使用:
using CsvHelper;
using HtmlAgilityPack;
using System.IO;
using System.Collections.Generic;
using System.Globalization;
在Main 函数之外,您将为目录标题创建一个公共类。
public class Row
{
public string Title {get; set;}
}
现在,回到主功能,你需要加载你想要搜索的页面。正如我之前提到的,我们将查看维基百科中关于希腊的内容!
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://en.wikipedia.org/wiki/Greece");
我们的下一步是解析并选择包含所需信息的节点,这些信息位于toctext 类的 span 标记中。
varHeaderNames = doc.DocumentNode.SelectNodes("//span[@class='toctext']");
现在该如何处理这些信息呢?让我们把它存储到 .csv 文件中,以备后用。要做到这一点,首先需要遍历我们之前提取的每个节点,并将其文本存储到一个列表中。
CsvHelper 将完成剩余的工作,创建并将提取的信息写入文件。
var titles = new List<Row>();
foreach (var item in HeaderNames)
{
titles.Add(new Row { Title = item.InnerText});
}
using (var writer = new StreamWriter("your_path_here/example.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(titles);
}
5.运行代码
代码已经完成,现在只需运行即可!在终端中使用此命令行。请确保先保存了文件!
dotnet run
你完了
希望这篇文章能帮助你更好地理解使用 C# 进行网络搜索的基础知识。
拥有一个自己的搜刮工具非常有用,但请记住,你一次只能搜刮一个网页,而且还必须手动选择网站 HTML 代码中的标记。
如果你想抓取其他几个页面,使用抓取器会比手动选择信息快很多,没错,但并不是所有网站都能用这种方法抓取。有些网站是动态的,本示例无法提取其所有数据。
您是否想过使用一种预制的、更先进的工具来帮助您进行大规模刮削?
看看 API 能为你做些什么?以下是WebScrapingAPI 编写的指南,可帮助您选择适合您需要的 API。
下次再见
新闻和更新
订阅我们的时事通讯,了解最新的网络搜索指南和新闻。
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

相关文章



学习如何使用 Golang 搜刮 HTML 表格以进行强大的数据提取。探索 HTML 表格的结构,并使用 Golang 的简洁性、并发性和强大的标准库构建网络刮擦工具。


