Re: [讨论] 资料撷取程式发想

楼主: StupidGaGa (笨嘎嘎)   2014-05-13 16:40:34
※ 引述《d25702 (DOTA)》之铭言:
: 我想要做一只可以从网络撷取资料并分析利用的程式,
: 我的初步想法如该图

: 1.撷取网页码我算用httpwebrequest(httpWebresponse)或WebBroswer技术
: 2.分析资料用regularExpression
: 3.接口显示用datagridview
: 4.资料EXCEL汇出则用NPOI
: 但目前我苦无想法与来源来为这只程式注入生命,
: 大家有什么idea吗?
: 注:个人使用语言是VB.NET
刚好我也开发过类似的专案,
回答你一些我用到的东西。以C#来开发。
抓网页的方法有三个
01. httpwebrequest
02. webclient
03. webbrowser
由难到简单是01>02>03,
不过,我比较建议的是用httpwebrequest,
如果想偷懒点或者简单的程式用webclient,
最后,webbrowser不要用,会有memory leak的问题,程式开太久会内存会爆掉。
通常爬虫会搭配多执行绪,
如果简单程式或你懒的话,用BackGroundWorker,
但是我比较建议自己写多执行绪,
同时爬2X个网站你拉BackGroundWorker会死人,
毕竟,工具是好用,但无法搭配编写者的需求。
分析或拆网页的话,也有几个方法,
01. Json、Xxml
02. Html Agility Pack
03. string
01的话,直接反序列化就好,最快,
02的话,稍微学一下,蛮简单的。
03的话,通常会用string.IndexOf或string.Split
02或03的话,其实各有优缺点,
有时候网页版面大改的话,02、03其实都要修改,
不过有时候小改的话,03其实比较有相容性。
不过这三个方法都一定要会的。
显示画面的话,随意你想怎么做,
因为这要讲下去会讲到软件设计模式,
有兴趣的话可以自己研究。
转存Excel档这部分的话其实没什么太大问题,
不过我建议存盘方式建议要抽像,
到时候要改成MySQL、Access、txt、Json、xml…会比较有弹性。
写这种爬虫软件有个地方要注意,就是“你是否会比较分析多个网站”?
有跟没有写起来的东西差蛮多的,
尤其如果牵扯到多执行绪的话要多思考一下喔。
作者: pkmu8426 (巴426)   2014-05-14 18:16:00
请问 httprequest类 应该要熟悉该网站的标头 甚至封包导向的验证机制对吧? 有些网站标头和一来一往封包做了些验证 所以还要特地去分析网站这部分的运作才能正式进入撷取网页文本的阶段。y另外 类似诚品有挡webbrowser的机制 是从cookie 或是封包验证的机制? 一般浏览器浏览没问题 webbrowser会被挡谢谢。关于string分析网页 string.Contains replace 也满好用
作者: a926 (Aaron)   2014-05-15 10:23:00
我之前抓一个游戏网站的查价.是先用Fiddler去试他要带的参数因为他用.Net写的,后来发现他需要某些.Net必备的值最后我才用WebRequest成功抓到资料@@
作者: pkmu8426 (巴426)   2014-05-15 18:07:00
谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com