C# 抓取网站数据
项目主管说这是项目中的一个亮点(无语...), 类似于爬虫一类的东西,模拟登陆后台系统,获取需要的数据。然后就开始研究这个。
之前有一些数据抓取的经验,抓取流程无非:设置参数->服务端发送请求->解析结果
1、验证码识别
系统的验证码只包含数字,不复杂,所以没有深入研究。
http://www.cnblogs.com/ivanyb/archive/2011/11/25/2262964.html
这个完全满足我的需求。
2、用户名、密码是用户提供的。
这里面有一个证书,每次请求都要带上。
证书获取方法:http://www.sufeinet.com/thread-4270-1-1.html
3、模拟登陆请求网上很多。
推荐位大神,写的相当不错:http://www.sufeinet.com/thread-2382-1-1.html
4、解析html内容
推荐一个类库:HtmlAgilityPack,灰常好用。它将html字符串转换成类型xml的操作(本来我还想用正则)。
有以上这些东西,基本上就可以调试工作了,要想做成一个后台服务,还需要一个定时任务的东西,这个还在研究。。。
心得:
1、在登陆的时候,一直提示验证码错误,百思不得其解,因为验证码是我手动输入的,用抓包工具分析后,发现JSESSIONID(JSP网站服务端用到的),这个每次请求都需要带上,以及JSESSIONID是否正确。
2、在抓取数据的时候,提示登陆超时,郁闷许久,抽根烟,把问题有指向了相关参数上,抓包分析后,问题就出现在JSESSIONID上,JSESSIONID取值不对,修改后,一切正常。
开源网络爬虫很多,上Sourceforge一搜就会有很多,但很少有C#的。今天推荐两个c#开发的网络爬虫
http://www.codeproject.com/KB/IP/Crawler.aspx 老外写的,http通讯采用了socket,效果不错,不过没有处理中文,中文下载会出现乱码,在socket接受部分做一下处理就可以了。这个程序比较 完整,一个基本爬虫所具备的功能都有了,是一个不错的例子。VS2003,.net 1.1 其中有些写法已经过时,需要调整。
http://www.jeffheaton.com/source还是一个老外写的,csspider.zip。没有仔细研究,遵循LGPL协议,这个同志是专门做爬虫研究的,写过不少书,只不过是英文,看不懂。.net 2.0的。
这里介绍的两个例子都是比较完整的例子,网页下载、分析、多线程、输出都有了。稍微进行以下加工便可得到很好的效果,同时,也可多研究一下实现思路,对自己做爬虫有很大的帮助。
C# 抓取网站数据的更多相关文章
- 抓取网站数据不再是难事了,Fizzler(So Easy)全能搞定
首先从标题说起,为啥说抓取网站数据不再难(其实抓取网站数据有一定难度),SO EASY!!!使用Fizzler全搞定,我相信大多数人或公司应该都有抓取别人网站数据的经历,比如说我们博客园每次发表完文章 ...
- pythonのscrapy抓取网站数据
(1)安装Scrapy环境 步骤请参考:https://blog.csdn.net/c406495762/article/details/60156205 需要注意的是,安装的时候需要根据自己的pyt ...
- 用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式
最近在做一些抓取其它网站数据的工作,当然别人不会乖乖免费给你抓数据的,有各种防抓取的方法.不过道高一尺,魔高一丈,通过研究都是有漏洞可以钻的.下面的例子都是用PHP写的,不会用PHP来curl的孩纸先 ...
- PHP用curl抓取网站数据,仿造IP、伪造来源等,防屏蔽解决方案教程
1.伪造客户端IP地址,伪造访问referer:(一般情况下这就可以访问到数据了) curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-FORWARDED-FOR:1 ...
- 利用nodejs的cheerio抓取网站数据
/*引入模块*/ var http = require('http') var url = 'http://www.cnblogs.com/txxt' var cheerio = require('c ...
- iOS开发——网络实用技术OC篇&网络爬虫-使用青花瓷抓取网络数据
网络爬虫-使用青花瓷抓取网络数据 由于最近在研究网络爬虫相关技术,刚好看到一篇的的搬了过来! 望谅解..... 写本文的契机主要是前段时间有次用青花瓷抓包有一步忘了,在网上查了半天也没找到写的完整的教 ...
- iOS开发——网络使用技术OC篇&网络爬虫-使用正则表达式抓取网络数据
网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...
- Node.js的学习--使用cheerio抓取网页数据
打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ...
- java抓取网页数据,登录之后抓取数据。
最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...
随机推荐
- ES6学习笔记(2)
变量的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,被称为解构(Destructuring); 数组的解构赋值 let [a, b, c] = [1, 2, 3]; cons ...
- public, protected and private inheritance in C++
Get from Stackoverflow. The details can easily understand from the below example. class A { public: ...
- redis 与 spring整合 hash 增删改操作 list增删改操作
本人,对于以前redis的学习是非常痛苦的!近期将以前的东西捡起来.以博客的形式存储,以便于以后快速捡起来,并和广大同胞一起分享! 1):简单介绍 redis 是基于C语言开发. redis是一个ke ...
- 二分查找-python
约12年年底的时候,接触了python不到半年的样子,入门是直接实现GUI测试case的.今天面试地平线机器人,发现忘得差不多了- -. 当时的问题是这样的 写一个二分查找是实现,我好像不记得二分查找 ...
- HBase学习
记录HBase的学习过程.之后会陆续添加内容. 阅读hbase的博客,理解hbase是什么.推荐博文: 1,HBase原理,基础架构,基础概念 2,HBase超详细介绍 --------------- ...
- SNS网站成功原因剖析_完结
SNS网站成功原因剖析 前言 亿注册用户)为例,讨论下 Fackbook成功的原因,进而分析结合国内环境,讨论当前国内流行的 SNS网站成功失败要素. 一.Facebook (一) Facebook总 ...
- 关于Jquery的delegate绑定事件无效
今天在做一个页面,用的是easyui页面有很多的tabs,里面都放了iframe 需要在load事件动态调整iframe高度 发现始终无法使用delegate来绑定load事件. 纠结了一下午发现了问 ...
- VC++ 解决在鼠标移动时,光标闪烁的问题。其实本质是 ON_SETCURSOR的用法
在调用Windows API函数SetCursor设置光标时,可能会碰到闪烁的问题:移动鼠标,光标在Class Cursor(即注册窗口类时指定的Cursor)与预设Cursor之间闪烁. 在MSDN ...
- Qt界面对象的事件调用
QMetaObject::invokeMethod(m_mainToolBarItem, "change2DesktopMode", Q_ARG(QVariant, m_curMo ...
- lua创建文件和文件夹
创建文件夹: os.execute('mkdir xx') 创建文件: f = assert(io.open('a.tmp','w')) f:write('test') f:close()