为什么要这个?
    做个内容站--小说/电影/动漫---阿里云+爬虫+Web
    数据搜集爬虫---招标数据爬虫/淘宝数据/招聘信息
    竞品分析--抓取竞争对手数据
爬虫违法吗?
    不问自取谓之偷;爬虫能拿到的信息都是浏览器能访问到的,就是公开数据;
    不要基于盈利(小爬虫都没事儿);360搜索引擎--被判赔偿--违背了robots

爬虫就是 分析--->尝试---->测试--->分析--->尝试---->测试

爬虫攻防:
robot协议(道德防线):根域名/robots.txt   弱的约定
---服务端请求信息(urlrefer/agent){爬虫模拟好就能突破}
---用户登录{模拟请求带上cookie}
---IP黑名单白名单{代理请求}  
---识别爬虫后定期返回验证码{换IP/打码平台}
---js动态加载/动态修改/数据图片化{可以解决}  
爬虫:道高一尺魔高一丈,任何信息是无法阻止抓取的
     
Html下载----数据筛选清洗入库---多线程
数据筛选:正则(麻烦)/indexof+substring+replace/第三方工具包HtmlAgilityPack支持Xpath(本质是正则)
安全控件--ActiveX

1 深度抓取&批量数据高效匹配获取
2 所见非所得属性获取
3 Ajax数据的获取
4 多线程抓取

以下历程时爬取豆瓣影评

源代码文件:

爬取豆瓣的网址如下:https://movie.douban.com/subject/30282387/reviews

Program.cs

using Newtonsoft.Json;
using Ruanmou.Crawler;
using Ruanmou.Crawler.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace TestCrawler
{class Program{static void Main(string[] args){//主要的还是URLstring testCategory = "{\"Id\":73,\"Code\":\"02f01s01T\",\"ParentCode\":\"02f01s\",\"Name\":\"影评\",\"Url\":\"https://movie.douban.com/subject/30282387/reviews\",\"Level\":3}";Category category = JsonConvert.DeserializeObject<Category>(testCategory);ISearch search = new DoubanSearch(category);search.Crawler();Console.ReadKey();}}
}

DoubanSearch.cs

using HtmlAgilityPack;
using Ruanmou.Crawler;
using Ruanmou.Crawler.Model;
using Ruanmou.Crawler.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace TestCrawler
{public class DoubanSearch : ISearch{private Logger logger = new Logger(typeof(DoubanSearch));private Category category = null;private int time = 0;public DoubanSearch(Category _category){category = _category;}public void Crawler(){try{ //url是否为空if (string.IsNullOrEmpty(category.Url)) {return;}string html = HttpHelper.DownloadUrl(category.Url);//下载htmlHtmlDocument document = new HtmlDocument();document.LoadHtml(html);//获取整个节点的所有div,一页总共有20条评论string path = "//*[@id='content']/div/div[1]/div[1]/div";HtmlNodeCollection node = document.DocumentNode.SelectNodes(path);foreach (HtmlNode data in node){FindDoubanCommentSingle(data);}}catch (Exception){}}/// <summary>/// 处理显示单个评论/// </summary>/// <param name="node"></param>public void FindDoubanCommentSingle(HtmlNode node){try{HtmlDocument htmlDocument = new HtmlDocument();htmlDocument.LoadHtml(node.OuterHtml);HtmlNode node1 = htmlDocument.DocumentNode;//评论内容的Xpathstring xpath = "//*[@class='review-short']/div/text()[1]";HtmlNode nameNode = node1.SelectSingleNode(xpath);string str = nameNode.ParentNode.InnerText;time++;Console.WriteLine($"爬取数据->{time}");Console.WriteLine(str);Console.WriteLine();}catch (Exception){}}}
}

结果如下,一共20条

.net研究院之爬虫(第三方工具包HtmlAgilityPack)相关推荐

  1. 微软亚洲研究院开源分布式机器学习工具包

    微软亚洲研究院开源分布式机器学习工具包 为了满足研究人员和开发者日益增长的各种需求,微软亚洲研究院于日前将分布式机器学习工具包(DMTK)通过Github开源.DMTK由一个服务于分布式机器学习的框架 ...

  2. python第三方工具箱_我的Python笔记——标准库、第三方工具包

    1.标准库 标准库即安装Python时自带的库,但不能直接调用,需要用Import语句引入. 1)sys argv:命令行参数 exit([arg]):退出当前程序,可提供返回值或错误信息 modul ...

  3. NLP-文本处理:依存句法分析(主谓、动宾、动补...)【基于“分词后得到的词语列表A”+“A进行词性标注后得到的词性列表B”来进行依存句法分析】【使用成熟的第三方工具包】

    句法分析(syntactic parsing)是自然语言处理中的关键技术之一,它是对输入的文本句子进行分析以得到句子的句法结构的处理过程.对句法结构进行分析,一方面是语言理解的自身需求,句法分析是语言 ...

  4. NLP-文本处理:词性标注【使用成熟的第三方工具包:中文(哈工大LTP)、英文()】【对分词后得到的“词语列表”进行词性标注,词性标注的结果用于依存句法分析、语义角色标注】

    词性: 语言中对词的一种分类方法,以语法特征为主要依据.兼顾词汇意义对词进行划分的结果, 常见的词性有14种, 如: 名词, 动词, 形容词等. 顾名思义, 词性标注(Part-Of-Speech t ...

  5. python网络爬虫——爬虫第三方库的使用(二)

    爬虫第三方库的使用 一.urllib库的介绍与使用 1.urlopen()方法 2.Request()方法 3.Robots协议 二.requests库的介绍与使用 1.GET请求 2.POST请求 ...

  6. python网络爬虫第三方库_Python常用第三方库大盘点

    Python语言有超过12万个第三方库,覆盖信息技术几乎所有领域.下面简单介绍下网络爬虫.自动化.数据分析与可视化.WEB开发.机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能 ...

  7. python爬虫(三):爬虫常用工具包

    上一篇爬取bilibili的弹幕进行图云展示:爬取B站<夏洛特烦恼>字幕词云展示,是爬取数据+数据展示结合的范例,这里将介绍爬虫的常用工具: 目录 常用工具 Requests lxml B ...

  8. Elasticsearch 第三方工具包Bboss的简单使用

    简介 真的只是简单使用,Bboss宣传bboss-elasticsearch是最好用的Elasticsearch的java rest api,核心有dsl脚本和一些自己封装的使用.我只是简单使用了它封 ...

  9. Java使用第三方工具包将word转换为PDF文件

    ** 最近有个需求是生成报表的同时需要提供word文档下载和PDF下载的功能,试了几款软件,最终选用Aspose.words工具,但是试用版会自动加水印和有页数限制,下附去水印教程和页数限制去除,方法 ...

最新文章

  1. NIO 之 Selector实现原理
  2. react-native中显示手机本地图片/视频
  3. 【EasyUI tree】Python 异步菜单树的实现
  4. SylixOS异常管理
  5. 机器学习实战(笔记)------------KNN算法
  6. 第七节:Trigger(SimpleTrigger、CronTrigger)哑火(MisFire)策略 :
  7. 【C++ STL学习之一】容器的共通能力和共通操作总结
  8. 解决Ubuntu18.04 No wifi adapter found
  9. java 嵌套类: Nested classes
  10. Windows 的 80 端口被 System 进程占用解决方案
  11. Eclipse查看对应windowsbuilder+GEF+EMF版本
  12. macbook历代_历代MAC机型配置汇总
  13. 重点人员动态管控系统开发,公安情报研判分析平台建设
  14. mfc获取计算机的连接端口,[求助]请问socket编程里,服务器端用什么函数获取客户端的地址与端口...
  15. 网站地图怎么做?dedecms网站地图制作方法
  16. php夜间,php实现自动开启/关闭夜间模式
  17. 如何在Node.js应用程序中使用RethinkDB
  18. POJ Haybale Guessing
  19. 网络工具Netwox和Wireshark详解
  20. 联想创投创业者巅峰对话 杨元庆:企业都会经历螺旋式上升

热门文章

  1. golang 命令行参数解析
  2. Java实现乐观锁和悲观锁
  3. k8s篇之Pod 干预与 PDB
  4. 1.4_5 Axure RP 9 for mac 高保真原型图 - 案例4 【旋转的唱片2】计时器
  5. 淘淘商城第43讲——搭建搜索服务工程
  6. python金融量化 pdf_python量化交易pdf,Python和金融分析的关系?量化交易内容深度?...
  7. 疫情下的5.20给女朋友写的一份信:哈哈感动了女友,一下午也值了(一份静态网站,基础入门的也可以看懂+简单部署)
  8. 【宫水三叶的刷题日记】467. 环绕字符串中唯一的子字符串(中等)
  9. 盖璞发布最新业绩;​星巴克中国内地首家共享空间概念店诞生;加拿大鹅任命Paul Cadman为亚太区总裁 | 知消...
  10. 支持向量机算法与实现