程序员的知识教程库

网站首页 > 教程分享 正文

爬虫原理和流程 爬虫教程是什么

henian88 2024-12-25 11:59:42 教程分享 7 ℃ 0 评论

网络爬虫(Web Crawler)又称为网络蜘蛛(Web Spider)或Web信息采集器,是用来收集数据,它是一种按照指定规则,自动抓取或下载网络资源的计算机程序或自动化脚本。最常见的用途就是利用爬虫来收集数据、刷流量和秒杀抢购活动。

普通网络爬虫的流程大致如下图所示,一般包含URL队列模块、页面内容获取模块、页面解析模块、数据存储模块和URL过滤模块。具体流程可描述如下。

爬虫的步骤:

一、获取网页

使用代码抓取网页的源码内容。可以使用以下几种方法:

1.1 HttpWebRequest/HttpWebResponse、HttpClient

这是.Net类库提供的类,可以方便的抓取网页源码,优点是使用方便,缺点是不能抓取动态页面。

1.2 使用Selenium

Selenium本身是一个自动化浏览器测试工具,但也可以被用于爬虫。通过使用不同的浏览器驱动,可以支持不同的浏览器,包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等. 优点是可以获取动态页面,而且可以模拟鼠标点击,拖动等操作。缺点是会弹出浏览器窗体。

1.3 嵌入浏览器

可以使用WebBrowser/CEF等浏览器控件。抓取原理是使用内嵌浏览器打开一个页面,再获取页面源码。这种方式的优点是可以抓取动态页面,缺点是抓取是被动的,不能主动控制。

1.4 无头浏览器

Headerless Browser(无头的浏览器)是浏览器的无界面状态,可以在不打开浏览器GUI的情况下,使用浏览器支持的性能。无头浏览器和嵌入浏览器获取网页源码的原理是一样的,都是使用浏览器打开一个页面,再获取源码。但它是以Headless方式运行,可以不用显示在界面上。在C#中常用的是Puppeteer-Sharp、PhantomJS,这个库还支持主动等待抓取结果。

二、提取网页信息

网页源码获取到之后,我们需要对自己想要的内容进行提取,最常用的,肯定就是链接里的图片和视频等。 在C#中,可以使用以下方式来提取网页信息。

2.1 正则表达式

这种方式虽然需要学习正则表达式的相关知识,但功能强大,几乎无所不能。这里我做了一些总结,可以参考一下

2.2 使用AngleSharp/HtmlAgilityPack等支持DOM的HTML解析库。

HtmlAgilityPack支持XPath查询,暂不支持CSS选择器。AngleSharp支持CSS选择器,暂不支持XPath查询附加:

    1. 如果使用的是CEF/Puppeteer-Sharp,可以执行js来进行信息提取;
    2. 如果使用的是Selenium,可直接使用Selenium自带的CSS选择器和XPath查询来进行信息提取;

三、保存数据

这里得看自己需求,推荐SQLite/Berkeley DB等嵌入式数据库,Redis和Mongodb也是不错的选择。如何抓取动态网页的内容动态网页指的是采用 了Ajax 、前端模块化工具来构建,整个网页由 JavaScript 动态渲染出来的页面。对于这种情况,我们可以分析其后台 Ajax 接口,也可使用 Selenium/CEF/Puppeteer-Sharp这样的库来实现模拟 JavaScript渲染 。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表