.net 爬虫框架技术选型
个人认为爬虫框架分抓取框架和分析框架
1)抓取框架
.net 市面上好的似乎不多,选择要素分两种:1.轻量型,2.重量型。
1. 轻量型是可以定制一些特殊的功能或者插件开关形式。总体性能高,速度快。
自己写的webclient,httprequest,httpclient等。或者直接socket编写!
2. 重量型是可以基本模式浏览器,更加傻瓜化,也基本屏蔽了一些反爬虫机制。
如webbrower或者其他的webkit浏览器内核封装的.net框架。
抓取的特殊功能包括:cookie支持(默认),301自动跳转,https默认支持,gzip等压缩默认支持,自动多种方式识别编码,默认模拟浏览器header,模拟css和js执行等等。
当然越是功能强大,性能越差些,但是适应各种情况的能力越强(反爬虫能力),轻量型和重量型适应的抓取场景也都不一样。
技术选择:
HttpHelper(作者是收费的,看了源码,其实功能也不强大;自己也能做,只是原来写的http框架源码没了,急着用暂时用下)
scrapysharp 中的ScrapingBrowser
.net HttpWebRequest 简单封装下
.net webclient 简单封装下
2)分析框架
旧技术:正则表达式
新方式: scrapysharp,HtmlAgilityPack,CsQuery 等等(还有很多)
scrapysharp:扩展自HtmlAgilityPack,非常好用。(支持css选择器方式,快速上手)
http://www.cnblogs.com/arxive/p/7075306.html
HtmlAgilityPack:本来就好用,但是用的时候还是要进行部分算法处理。(支持xpath方式获取,快速上手)
百度一下,资料不少。
CsQuery:似乎对中文 的支持有bug,获取html的时候,中文会乱码,不知道为什么。(支持jq方式获取,快速上手)
https://github.com/jamietre/CsQuery
.net 爬虫框架技术选型的更多相关文章
- 【转】服务化框架技术选型与京东JSF解密
[京东技术]声明:本文转载自微信公众号“开涛的博客”,转载务必声明. 作者:章耿,原京东资深架构师,曾负责京东服务框架,配置中心等基础平台.近十年工作经验,专注于基础中间件等底层技术架构,对分布式系统 ...
- 【JavsScript】JavaScript MVC 框架技术选型
你很喜欢Gmail和Trello之类的单页面应用,但是不太确定该从何开始.也许你的JavaScript代码是如此的杂乱无章,以致于你很想在下一个项目上尝试下JavaScript MVC库和框架,却苦于 ...
- 前端开发工程师 - 05.产品前端架构 - 协作流程 & 接口设计 & 版本管理 & 技术选型 &开发实践
05.产品前端架构 第1章--协作流程 WEB系统 角色定义 协作流程 职责说明 第2章--接口设计 概述 接口规范 规范应用 本地开发 第3章--版本管理 见 Java开发工程师(Web方向) - ...
- 老王讲自制RPC框架.(一.前言与技术选型)
(#)背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只 ...
- 构建NetCore应用框架之实战篇(四):BitAdminCore框架1.0登录功能细化及技术选型
本篇承接上篇内容,如果你不小心点击进来,建议从第一篇开始完整阅读,文章内容继承性连贯性. 构建NetCore应用框架之实战篇系列 一.BitAdminCore框架1.0版本 1.1.0版本是指最小版本 ...
- 关于爬虫平台的架构实现和框架的选型(二)--scrapy的内部实现以及实时爬虫的实现
我们接着关于爬虫平台的架构实现和框架的选型(一)继续来讲爬虫框架的架构实现和狂阶的选型. 前面介绍了scrapy的基本操作,下面介绍下scrapy爬虫的内部实现架构如下图 1.Spiders(爬虫): ...
- 2020 年了,Java 日志框架到底哪个性能好?——技术选型篇
大家好,之前写(shui)了两篇其他类型的文章,感觉大家反响不是很好,于是我乖乖的回来更新硬核技术文了. 经过本系列前两篇文章我们了解到日志框架大战随着 SLF4j 的一统天下而落下帷幕,但 SLF4 ...
- 《2016ThoughtWorks技术雷达峰会----js爆炸下的技术选型》
JS爆炸下的技术选型 刘尚奇 ThoughtWorks, 高级咨询师 JS每6个星期出现一个新框架,那么如何进行JS的选型.以下从四个方面来分析. 1.工具 NPM for all the t ...
- 消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ
消息中间件的技术选型心得-RabbitMQ.ActiveMQ和ZeroMQ 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs RabbitMQ.Active ...
随机推荐
- Swoole笔记(二)
本文示例代码详见:https://github.com/52fhy/swoole_demo. Task 我们可以在worker进程中投递一个异步任务到task_worker池中.此函数是非阻塞的,执行 ...
- 跟着刚哥深入学maven
前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下. 一.为什么使用Maven这样的构建工具[why] ① 一个项目就是一个工程 如果项目非常庞大,就 ...
- 【小练习06】HTML+CSS--教学大讲堂
要求实现如下效果图: 代码演示 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- Java IO流--练习
1)将若干个Student对象,若干个Teacher对象,写出到d:/0404/a.txt中 2)将该文件中所有Student对象反序列化回来装入List, 所有的Teacher对象反序列化回来转入另 ...
- Dom元素的Property和Attribute
Attribute就是DOM节点自带的属性,例如html中常用的id.class.title.align等: 而Property是这个DOM元素作为对象,其附加的内容,例如childNodes.fir ...
- 前端打包文件在nginx上403的解决办法
遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如webpack等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如nginx等. 这次遇到的问题 ...
- spring quartz开发中使用demo
1.首先在pom.xml中配置quartz的jar: <!--定时器--> <dependency> <groupId>org.quartz-scheduler&l ...
- Caused by: java.lang.RuntimeException: by java.lang.OutOfMemoryError: PermGen space(tomcat 启动时提示内存溢出)
设置MaxPermSize大小TOMCAT_HOME/bin/catalina.bat 文件头加set JAVA_OPTS='-Xms512m -Xmx1024m -XX:MaxPermSize=51 ...
- [转]AngularJS 之 ng-options指令
原文地址 一. 基本下拉效果(lable for value in array) 其中select标签中的ng-model属性必须有,其值为选中的对象或属性值. <div ng-controll ...
- 我的学习之路_第二十章_JDBC
JDBC 使用JDBC技术,通过mysql提供的驱动程序,操作数据库 ● 1. 注册驱动 告知jvm 使用的是什么驱动程序(mysql,oracle) 使用API中的类 DriverManager中的 ...