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抓取网页数据,登录之后抓取数据。
最近做了一个从网络上抓取数据的一个小程序.主要关于信贷方面,收集的一些黑名单网站,从该网站上抓取到自己系统中. 也找了一些资料,觉得没有一个很好的,全面的例子.因此在这里做个笔记提醒自己. 首先需要一 ...
随机推荐
- Web前端安全问题
1.XXS跨站脚本攻击(Cross Site Scripting) 1)通过<script> 举个例子:通过QQ群,或者通过群发垃圾邮件,来让其他人点击这个地址: book.com/sea ...
- XMl.02-约束
DTD约束 DTD的书写位置 XML构建模块 DTD定义元素 DTD属性的定义 DTD实体的定义 schema约束 命名空间 schema约束的书写流程 XML被设计为一种很灵活的标记文档. 但是,有 ...
- linux系统PXE+Kickstart自动安装系统
一.PXEPXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 ...
- 2016 Multi-University Training Contest 2 - 1005 Eureka
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5738 题目大意:给定平面上的n个点,一个集合合法当且仅当集合中存在一对点u,v,对于集合中任意点w,均 ...
- 跨过几个坑,终于完成了我的第一个Xamarin Android App!
时间过得真快,距离上次发随笔又是一年多.作为上次发的我的第一个WP8.1应用总结的后继,这次同样的主要功能,改为实现安卓版APP.前几个月巨硬收购Xamarin,把Xamarin集成到VS里了,大大方 ...
- CentOS 7 安装php开发环境
安装服务 : yum install httpd httpd-devel service httpd start 启动 安装mariadb : yum -y install mariadb* ...
- JS中this的指向问题
JS中this的定义:this对象是在运行时基于函数的执行环境绑定的(通俗点来说就是:this代表当前函数属于哪个对象). this一般情况下都代表的是global对象,在浏览器中就是window对象 ...
- css基础不扎实
写了两周的网页,发现自己的css基础还是很差的,当时培训学习的时候就发现了,我做的页面都特别的别扭和丑吧,在班级上应该是垫底的: 原先只知道用float,不会使用定位,网页连固定定位也不会,现在发现, ...
- SQLServer2008R2 error 40解决方法
实际遇到的问题,以下为搜到的解决方案,亲测可用 转自 http://blog.csdn.net/laga516/article/details/7696577 最近一直在配置服务器, 这当中最头疼的就 ...
- Camstar Portal modeling user guid --WorkCenter workCell workStation的关系
业务需求:如何让用户登陆时选择 生产线(如:SMT生产线) Operation(如:维修员) 工作单元(如:印刷段) 工作站(如:上板) 关系图: 从上图可以看出: workCell是Resour ...