浅谈抓取网页数据(奉上Demo)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 浅谈抓取网页数据(奉上Demo)

浅谈抓取网页数据(奉上Demo)

 2014/4/9 12:31:48  fzl  博客园  我要评论(0)
  • 摘要:Demo源码背景曾经在公司做过一个比价系统,就是抓取其它网站上商品的价格并和自己公司的商品进行对应,然后展示出来,给pm提供一个定价的参考。后来,有同事的朋友在找工作的时候,猎头让其做一个抓取去哪网最低价机票的程序,然后,我就帮忙整了一下。本文的目的在于提供这个程序的源码,然后和大家探讨一下网页信息抓取的相关点。Demo使用c#并在vs2012环境下运行。项目结构一览下面是Demo的项目结构图:运行结果下面是Demo的运行结果图:思路&问题分析个人以为,网页信息的获取分为两个阶段
  • 标签:浅谈 数据 抓取网页 网页

Demo源码

背景

  曾经在公司做过一个比价系统,就是抓取其它网站上商品的价格并和自己公司的商品进行对应,然后展示出来,给pm提供一个定价的参考。后来,有同事的朋友在找工作的时候,猎头让其做一个抓取去哪网最低价机票的程序,然后,我就帮忙整了一下。本文的目的在于提供这个程序的源码,然后和大家探讨一下网页信息抓取的相关点。Demo使用c#并在vs2012环境下运行。

项目结构一览

  下面是Demo的项目结构图:

运行结果

  下面是Demo的运行结果图:

思路&问题分析

  • 个人以为,网页信息的获取分为两个阶段:1 知道目标网页和相关参数,并获取网页的源码 2 将获取到的源码抽取出我们需要的信息,并转换成c#对象
  • 在Demo中的HttpHelper.cs文件下的类的职责就是设定目标网页地址和相关参数,该类是在网上找到的,据说可以无视cookie、证书等验证,很牛,推荐小伙伴们使用,所以,第一个目标是比较容易能够完成的
  • 难点在于第二个目标,我们如何抓取html源码(json数据)中的有效信息并转换成我们需要的c#对象呢?Demo中获取的是json数据,然后用正则抓出了其中的一部分,再转换成一个实体类的列表。Demo中的AsyncRegexHelper是异步的正则匹配帮助类,在使用正则匹配的过程中,经常遇到无限回溯的问题,使用这个帮助类可以异步地执行匹配并且有一个超时时间。现在碰到的问题是正则匹配比较不靠谱,难度较大且不易扩展,目前打算想用Html Agility Pack来进行数据的匹配,希望伙伴们能指点下,谢谢大家。

总结

  本人文笔拙劣,感谢大家的支持。提供源码,大家分享一下,希望能做一个通用点的系统,只需要输入网址和一些简单的规则,就能够获取我们所需要的信息。

Demo源码

发表评论
用户名: 匿名