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

Demo源码html

背景json

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

项目结构一览cookie

  下面是Demo的项目结构图:异步

运行结果网站

  下面是Demo的运行结果图:url

思路&问题分析spa

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

总结htm

  本人文笔拙劣,感谢你们的支持。提供源码,你们分享一下,但愿能作一个通用点的系统,只须要输入网址和一些简单的规则,就可以获取咱们所须要的信息。对象

Demo源码

相关文章
相关标签/搜索