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抓取网页数据,登录之后抓取数据。
最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...
随机推荐
- zxing--条码图像处理库
ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码. 该项目可实现的条形码 ...
- Python描述符(descriptor)解密(转)
原文:http://www.geekfan.net/7862/ Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装 ...
- html css 编写规范
html 规范 一 语法 1.用两个空格带她tab, 2.嵌套的元素应该缩进一次,即两个空格是最好 3.属性定义,全部使用双引号,尽量避免单引号. 4.不要在自闭和标签尾部添加闭合标签. 5.可选得结 ...
- Android应用开发项目结构分析
初学Android开发,初步理解的Android应用项目结构,备忘. 一.清单文件AndroidManifest.xml 功能: 1.供Android平台调用,供其了解本应用的信息,因此,所有的组件( ...
- WCF之Binding详解
本文的出发点: 通过阅读本文,您能了解以下知识: WCF中的Binding是什么? Binding的组 成? Binding Element 的分类? Binding描述 了那些层面的信息? 选择正确 ...
- Qt窗口添加鼠标移动拖拽事件
1. .h文件中添加 private: QPoint dragPosition; 2. 在cpp文件中重写鼠标点击和拖拽函数 void ShapeWidget::mousePressEvent( ...
- 在php里写sql查询需要注意的事情
---恢复内容开始--- 今天往php里写了一条sql查询, $sql = "select * from videos where vuser=".$u: $ret = mysql ...
- python爬虫——黑板客老师课程学习
程序: 目标url 内容提取 表现形式 为什么: 大数据——数据膨胀,信息太多了,不知道哪些信息适合你,例如谷歌搜索引擎. 垂直行业搜索——某一个行业的搜索,与搜索引擎最大的区别:搜索引擎是告诉你哪些 ...
- Android 4.0 源代码结构
Android源码的第一级目录结构 Android/abi (abi相关代码.ABI:application binary interface,应用程序二进制接口) Android/bioni ...
- HDU 4831 Scenic Popularity
Scenic Popularity Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...