.net爬虫是一门必修课

简介: 本篇适合初学者学习爬虫,大概了解下什么是爬虫,介绍.net方面的网络操作类,及html结构的解析工具,从另一方面展现出不是一提爬虫,就是python怎样怎样,很多高级语言都可以爬虫,其实爬虫很简单,只是“爬虫”这个名字很霸气。

背景

网上关于爬虫的介绍很多,小编当初刚入门编程领域时老是听别人说爬虫怎么怎么好玩,对爬虫也没有概念,只知道这个名字特别牛叉,后来在采集数据时才真心明白"爬虫"其含义,不得不说取这个名字的人相当有水准,定登大雅之堂。关于这些概念小编就顺带一过,需要更详细的说明,请谷歌或百度知。小编今天要介绍的是.net爬虫,近几年,网上都在火吹python这门语言怎么怎么牛逼,凡是说爬虫的,谈人工智能的必能扯上python,当然小编这这里没有任何贬低python的意思。只是python爬的.net照样能干,java也可以,大部分高级语言都可以做到!好了,牛逼不多吹,下面亮真货。

在抓取数据之前,我们心里大概有个思路;

第一点:数据从网上来,必然要用到网络操作类,在.net这方面有三个操作类供我们使用(WebClient,HttpClient,HttpWebRequest),WebClient操作简单粗暴、HttpClient使用时注意资源的释放问题、HttpWebRequest更接近底层,在使用时稍微麻烦点,其实三者一般想要的功能都可以实现。

第二点:抓取的数据里面都是和html元素混合在一起,那必然需要解析html结构,筛选出我们想要的数据。这方面介绍两款工具(HtmlAgilityPack结合XPath使用,AngleSharp)。

我们抓取下博客园的详情页数据,上代码;
        {
            HtmlWeb client = new HtmlWeb();
            string detailUrl = "https://www.cnblogs.com/wangjiming/p/10098061.html";
            var doc = client.Load(detailUrl);
            HtmlNode node = doc?.DocumentNode.SelectSingleNode("//div[@class='post']");
            var title = node?.SelectSingleNode("h1[@class='postTitle']");
            HtmlNode node2 = doc?.DocumentNode.SelectSingleNode("//div[@class='postBody']");
            var content = node2?.SelectSingleNode("div[@id='cnblogs_post_body']");
            Console.WriteLine(title?.InnerText);
            Console.WriteLine(content?.InnerText);
            Console.WriteLine("---------------");
            //提取所有图片共下载
            string pat = @"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>";
            Regex r = new Regex(pat, RegexOptions.Compiled);
            MatchCollection listImg = r.Matches(content.InnerHtml);
            foreach (Match item in listImg)
            {
                if (item.Success)
                {
                    string url = item.Groups[1].Value.ToString();
                    HttpDownLoad.DownloadUseWebClient(url, "image");
                    string fullImgSrc = "/editorImages/cpy" + url.Substring(url.LastIndexOf('/'));
                    content.InnerHtml = content.InnerHtml.Replace(url, fullImgSrc);
                    Console.WriteLine(content.InnerHtml);
                }
            }
            Console.ReadLine();
        } 
  贴上关于图片下载的方法(HttpDownLoad.DownloadUseWebClient(url, "image"));
 public static void DownloadUseWebClient( string url, string localPath,string webSite=null)
        {
            WebClient wc = new WebClient();
            string fileName = Path.GetFileName(url);
            string path = Path.Combine(localPath, fileName);
            if (!Directory.Exists(localPath))
            {
                Directory.CreateDirectory(localPath);
            }
            if (File.Exists(path))
            {
                File.Delete(path);
            }
            wc.Headers.Add("Referer", webSite);     
            wc.DownloadFile(url, path);
        }  

大家可复制以上代码到vs中新建控制台自行去运行。或者点击“阅读原文”去浏览代码更友好。

相关文章
|
5月前
|
数据采集 消息中间件 安全
.NET使用分布式网络爬虫框架DotnetSpider快速开发爬虫功能
.NET使用分布式网络爬虫框架DotnetSpider快速开发爬虫功能
|
数据采集 uml 自然语言处理
.NetCore实践爬虫系统(二)自定义规则
回顾 上篇文章NetCore实践爬虫系统(一)解析网页内容 我们讲了利用HtmlAgilityPack,输入XPath路径,识别网页节点,获取我们需要的内容。评论中也得到了大家的一些支持与建议。下面继续我们的爬虫系统实践之路。
1043 0
|
Web App开发 数据采集 JSON
|
7天前
|
数据采集 XML 数据处理
使用Python实现简单的Web爬虫
本文将介绍如何使用Python编写一个简单的Web爬虫,用于抓取网页内容并进行简单的数据处理。通过学习本文,读者将了解Web爬虫的基本原理和Python爬虫库的使用方法。
|
21天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
24天前
|
数据采集 数据挖掘 Python
使用Python构建简单的Web爬虫:实现网页内容抓取与分析
本文将介绍如何使用Python编写一个简单的Web爬虫,实现对特定网页内容的抓取与分析。通过学习本文,读者将了解到如何利用Python的requests和Beautiful Soup库来获取网页内容,并通过示例演示如何解析HTML结构,提取所需信息。此外,我们还将讨论一些常见的爬虫挑战以及如何避免被网站封禁的策略。
|
4天前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
5天前
|
数据采集 存储 大数据
Python爬虫:数据获取与解析的艺术
本文介绍了Python爬虫在大数据时代的作用,重点讲解了Python爬虫基础、常用库及实战案例。Python因其简洁语法和丰富库支持成为爬虫开发的优选语言。文中提到了requests(发送HTTP请求)、BeautifulSoup(解析HTML)、Scrapy(爬虫框架)、Selenium(处理动态网页)和pandas(数据处理分析)等关键库。实战案例展示了如何爬取电商网站的商品信息,包括确定目标、发送请求、解析内容、存储数据、遍历多页及数据处理。最后,文章强调了遵守网站规则和尊重隐私的重要性。
16 2