An open API service indexing awesome lists of open source software.

https://github.com/zhaotianff/csharpcrawler

C#爬虫示例程序,想学习爬虫入门知识的可以看过来。后续会慢慢加入更多爬虫相关的知识。
https://github.com/zhaotianff/csharpcrawler

crawler csharp wpf

Last synced: 2 months ago
JSON representation

C#爬虫示例程序,想学习爬虫入门知识的可以看过来。后续会慢慢加入更多爬虫相关的知识。

Awesome Lists containing this project

README

        

# C\#爬虫项目



CSharpCrawler




GitHub stars


All releases


Github forks


All issues


CSharpCrawler :spider:

### 关于项目
C#开发爬虫的知识总结,目前还在更新中。这并不是一个完整的爬虫程序,只是一些示例。
> 为什么要拿C#开发爬虫项目,因为个人还是比较喜欢C#。C#虽然库少一点,但想要的功能基本还是能实现的。
> 总结的知识点如果什么错误之处,还恳请大家提个issue指正,一起学习进步♂( ̄▽ ̄)/

### 功能介绍

* 基础知识
* [爬虫基础知识](CSharpCrawler/PrerequisiteKnowledge.md)
* [如何绕开反爬虫机制](CSharpCrawler/AvoidAnti-CrawlingMechanisms.md)

* 网页抓取原理
* 使用套接字来获取网页源码

* 法律与道德约束
* 爬虫协议
* [爬虫协议介绍,以及它的语法规则;](https://github.com/zhaotianff/CSharpCrawler/blob/master/CSharpCrawler/RobotsExclusionProtocol.md)
* C#如何获取网站的爬虫协议;
* C#中如何解析爬虫协议;
* [法律相关](CSharpCrawler/CrawlerLaw.md)

* 抓取网页
* HttpWebRequest类的使用
* HttpClient类的使用
* 获取指定url的IP地址
* 获取指定url的网页头信息
* 如何从网页源码中提取页面的编码

* 抓取动态网页
* 使用[CEFSharp](https://github.com/cefsharp/CefSharp)来抓取动态网页
* 使用WebBrowser(IE)来抓取动态网页
* 使用[Puppeteer](https://github.com/hardkoded/puppeteer-sharp)来抓取动态网页
* 使用[Selenium](https://github.com/SeleniumHQ/selenium)来抓取动态网页

* WebAPI调用
* 获取实时天气
* 调用中国天气网公开API接口来获取天气

* 获取Bing每日图片
* 调用cn bing API接口来获取Bing每日图片

* 获取网页DOM
* 使用[HtmlAgilityPack](https://github.com/zzzprojects/html-agility-pack)来获取网页的DOM结构

* 使用CSS选择器和XPath选取元素
* CSS选择器
* XPath

* [正则表达式的使用](https://github.com/zhaotianff/CSharpCrawler/blob/master/CSharpCrawler/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F.md)
* 正则表达式的基础知识和基本使用;
* 正则表达式中的分组构造;
* 常用匹配模式;

* Url抓取(当Url太多时,UI会卡)
* 抓取指定网址的全部链接
* 通过指定深度,抓取子网页的全部链接
* 动态网页链接抓取
* 限定抓取当前页面的子链接

* 图片抓取
* 抓取指定url页面中的图片,通过配置url的页码规则,来进行翻页。
* 自动获取下一页

* 文件下载
* 使用WebClient类下载文件
* 多线程下载文件
* 从文件加载批量下载

* 多线程抓取

* 抓包工具使用
* [Fiddler](https://github.com/zhaotianff/CSharpCrawler/blob/master/CSharpCrawler/AnalysisPacket_Fiddler.md)

* 模拟登录并获取登录后的内容
* 使用Cookie(实现中)
* [使用Selenium](https://github.com/zhaotianff/CSharpCrawler/blob/master/CSharpCrawler/Selenium.md)(实现中)
* 说明:示例程序使用的是EdgeDriver,所以需要Windows10系统,如果需要其它浏览器Driver,可自行修改。
* 测试系统:Windows 10 1703 Edge 15.15063.0,如果Edge驱动版本不一致,需要手动更新至对应的版本。

* 必应图片搜索(*仅供交流学习使用,请勿用作商业用途*)
* 实现必应图片搜索的功能
* 翻页及优化(待更新)

* 爬虫数据存储
* Berkeley DB
* [介绍BerkeleyDB以及使用方式](https://github.com/zhaotianff/CSharpCrawler/blob/master/CSharpCrawler/BerkeleyDB介绍.txt)

* SQLite
* 介绍SQLite以及使用方式

* MongoDB
* [介绍MongoDB以及使用方式](https://github.com/zhaotianff/CSharpCrawler/blob/master/CSharpCrawler/MongoDB.md)

* 小例子-全国家常菜价格统计(*仅供交流学习使用,请勿用作商业用途*)
* 获取全国城市,以及城市代码
* 抓取家常菜价格
* 生成统计图表

* 小例子-通用抓取
* 电商类网站
* 新闻类网站(待更新)

* 将网页保存为图片/PDF

### Roadmap
* 视频下载
* 常规视频下载
* ffmpeg的使用
* blob类型视频下载
* AES加密的m3u8视频下载
* Url Encode/Decode 原理
* 抓包工具Charles的使用
* 使用抓包工具分析网站接口
* 使用抓包工具分析APP接口
* 验证码识别(字符验证码,滑块验证码)
* BloomFilter算法
* NLP基础
* 中文分词
* Lucene.net使用
* 优先级队列实现
* 基本爬虫架构
* 分布式爬虫架构
* 抓取豆瓣书评
* 当抓取的数据到非常大的的数量级时该怎么处理
* 使用代理


### 开发环境
~~Visual Studio 2013 + .Net 4.5
~~
~~Visual Studio 2015 + .Net 4.5.2
~~
Visual Studio 2017 + .Net 4.7.2

**如果没有安装Blend SDK,GAC中没有System.Windows.Interactivity.dll,需要自己引用bin/x64/Debug目录下的System.Windows.Interactivity.dll**

**编译时可能会显示各种库找不到,Nuget还原下包就可以正常编译了**

**更新CEF至85.3.130版本后,会出现找不到ChromiumWebBrowser的问题。解决方法是:还原Nuget包后重新打开项目**

**Berkeley DB需要引用bin/x64/Debug目录下的libdb_dotnet181.dll,运行时还需要libdb_csharp181.dll和libdb181.dll,已置于bin/x64/Debug目录下**

### 使用的三方组件
* [CefSharp](https://github.com/cefsharp/CefSharp)
* [HtmlAgilityPack](https://github.com/zzzprojects/html-agility-pack)
* [Oracle Berkeley DB](https://www.oracle.com/database/technologies/related/berkeleydb.html)
* [SQLite](https://www.sqlite.org/index.html)
* [Json.NET](https://github.com/JamesNK/Newtonsoft.Json)
* [Selenium](https://github.com/SeleniumHQ/selenium)
* [AngleSharp](https://github.com/AngleSharp/AngleSharp)
* [Puppeteer Sharp](https://github.com/hardkoded/puppeteer-sharp)

### 软件截图


start up


start up


start up


file download


file download


file download

### 爬虫项目
* [MSDN-Magazine-To-PDF](https://github.com/zhaotianff/MSDN-Magazine-To-PDF)

### License

[MIT License](LICENSE).