DHL 快递跟踪查询

?

思路描述:主要使用正则表达式解析。

返回一个跟踪步骤列表。

  1. public
    class TrackingData
  2. ????{
  3. ????????public
    string time { get; set; }
  4. ????????public
    string context { get; set; }
  5. ????}
  6. ?
  7. ????public
    class DHLExpressTrackingHelper
  8. ????{
  9. ????????private
    static
    string urlFormat = "http://webtrack.dhlglobalmail.com/?trackingnumber={0}";
  10. ?
  11. ????????public
    static List<TrackingData> GetTrackingData(string trackCode)
  12. ????????{
  13. ????????????//trackCode = "A150529020091";
  14. ????????????WebMocker dhlMocker = new WebMocker();
  15. ????????????var url = string.Format(urlFormat, trackCode);
  16. ????????????var html = dhlMocker.Get(url);
  17. ?
  18. ????????????//1
  19. ????????????var patternOLTag = "<ol.*?>(?<olvalue>.*?)</ol>";
  20. ????????????var match = Regex.Match(html, patternOLTag, RegexOptions.Multiline | RegexOptions.Singleline);
  21. ????????????if (match.Success)
  22. ????????????{
  23. ????????????????var olValue = match.Groups["olvalue"].Value;
  24. ????????????????return ParseTrackingData(olValue);
  25. ????????????}
  26. ?
  27. ????????????return
    new List<TrackingData>();
  28. ????????}
  29. ?
  30. ????????private
    static List<TrackingData> ParseTrackingData(string olValue)
  31. ????????{
  32. ????????????var patternLITag = "<li.*? class=\"(?<className>.*?)\".*?>(?<content>.*?)</li>";
  33. ?
  34. ????????????var list = new List<TrackingData>();
  35. ?
  36. ????????????string datePrefix = null;
  37. ?
  38. ????????????foreach (Match item in Regex.Matches(olValue, patternLITag, RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.IgnoreCase))
  39. ????????????{
  40. ????????????????var className = item.Groups["className"].Value;
  41. ????????????????var content = item.Groups["content"].Value;
  42. ????????????????if (className == "timeline-date")
  43. ????????????????{
  44. ????????????????????datePrefix = content;
  45. ????????????????}
  46. ????????????????else
    if (className.Contains("timeline-event"))
  47. ????????????????{
  48. ????????????????????var pp = "<div.*?class=\"(?<divClassName>.*?)\".*?>(?<divContent>.*?)</div>";
  49. ?
  50. ????????????????????TrackingData trackingData = null;
  51. ?
  52. ????????????????????foreach (Match subItem in Regex.Matches(content, pp, RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.IgnoreCase))
  53. ????????????????????{
  54. ????????????????????????var divClassName = subItem.Groups["divClassName"].Value.Trim();
  55. ????????????????????????var subContent = subItem.Groups["divContent"].Value.Trim();
  56. ????????????????????????if (divClassName == "timeline-time")
  57. ????????????????????????{
  58. ????????????????????????????subContent = Regex.Replace(subContent, "<[^<]*>", "");
  59. ????????????????????????????trackingData = new TrackingData();
  60. ????????????????????????????trackingData.time = datePrefix + "
    " + subContent;
  61. ????????????????????????}
  62. ????????????????????????else
    if (divClassName == "timeline-location")
  63. ????????????????????????{
  64. ????????????????????????????trackingData.context += subContent + "
    ";
  65. ????????????????????????}
  66. ????????????????????????else
    if (divClassName == "timeline-description")
  67. ????????????????????????{
  68. ????????????????????????????trackingData.context += subContent + "
    ";
  69. ????????????????????????}
  70. ????????????????????????//else if (divClassName == "timeline-location timeline-location-responsive")
  71. ????????????????????????//{
  72. ????????????????????????// trackingData.Description += subContent;
  73. ????????????????????????//}
  74. ????????????????????}
  75. ?
  76. ????????????????????list.Add(trackingData);
  77. ????????????????}
  78. ????????????}
  79. ?
  80. ????????????//foreach (var item in list)
  81. ????????????//{
  82. ????????????// Console.WriteLine(item.DateString + "--" + item.Description);
  83. ????????????//}
  84. ????????????return list;
  85. ????????}
  86. ????}
时间: 2024-07-29 08:23:39

DHL 快递跟踪查询的相关文章

国内主流快递物流查询API接口测评对比

? 快递物流查询API接口 快递查询接口是指快递查询网对外开放的应用程序接口,开发人员能够通过调用该接口与快递查询网进行交互,并基于该接口开发自己的快递查询应用程序. ? 应用场景 ① 买家物流查询:轨迹跟踪.包裹进度.预计送达时间.派送人联系方式等.② 卖家物流跟踪:是否超区.转件.多次派送.拒收③ 平台监控管理:假交易监控.匹配卖家发货与顾客确认收货时间.目前常用的快递物流查询接口供应平台有阿里云.用友APILink.京东万象.华为云.聚合数据.本文从用户体验角度对这5个平台上提供的快递物流

VBA通过HTTP协议实现邮件轨迹跟踪查询

作者:iamlasong 1.接口说明 通过互联网访问,接口调用为HTTP请求的方式,每一次由用户发起的HTTP请求,需要设置验证信息,具体方法是,在HTTP Header部分增加version及authenticate属性,属性值在联调测试之前由总部提供. 接口调用地址:http:// IP:Port/invoke/path/{mail_num} 接口调用方式:HTTP GET方式,通过HTTP GET发起请求,使用真实邮件号替换{mail_num} 编码格式:UTF-8 接口返回数据格式:

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪查询语句

SQL Server扩展事件(Extended Events)-- 使用扩展事件跟踪查询语句 创建扩展事件会话 展开"Object Explorer"."Management"."Extended Events"."Sessions"目录,你会发现一到两个预设的会话.默认,在SQL Server 2012包含system_health会话,而根据不同的SQL Server2012的版本,可能有AlwaysOn_health会话

android快递跟踪进度条

android 快递跟踪进度条 activity.class import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; public class MainActivity extends

Android项目实战视频教程_快递轨迹查询应用开发

基于Android平台的快递轨迹查询应用开发全程实录(MenuDrawer.DbUtils.HttpUtils.讯飞语音识别)课程分类:Android适合人群:中级课时数量:10(17节)课时用到技术:MenuDrawer.DbUtils.HttpUtils.讯飞语音识别涉及项目:基于Android平台的快递轨迹查询应用开发项目咨询qq:1840215592课程研发环境及内容简介:1.课程研发环境开发工具:Eclipse 4.2 JDK 1.6 SDK 22.62.内容简介本课程详细介绍了快递轨

c#读取快递100查询返回的JSON信息

{"message":"ok","nu":"1105016801203","companytype":"ems","ischeck":"1","com":"ems","updatetime":"2014-08-01 10:17:31","status"

【VBA研究】VBA通过HTTP协议实现邮件轨迹跟踪查询

作者:iamlasong 1.接口说明 通过互联网訪问,运单跟踪信息查询接口基于HTTP协议开发,接口为RESTFul风格的Web Service,信息交互过程为用户按我方提供的web service地址进行调用,我方接到调用请求后,为用户返回JSON格式组织的数据信息.用户根据约定的接口规范对数据进行解析. 接口调用为HTTP请求的方式,每一次由用户发起的HTTP请求,须要设置验证信息,详细方法是,在HTTP Header部分添加version及authenticate属性,属性值在联调測试之

基于Android平台的快递轨迹查询应用开发全程视频教程

课程讲师:欧楠课时数量:10(17节)课时用到技术:MenuDrawer.DbUtils.HttpUtils.讯飞语音识别涉及项目:基于Android平台的快递轨迹查询应用开发项目咨询QQ:1609173918 http://yunpan.cn/cVgILJtNYMcDB 访问密码 f885 目前Android平台移动应用开发正如火如荼的发展,智能手机和平板电脑的出货量正快速上升,人们正越来越习惯于在移动平台进行娱乐和各种操作.目前电子商务的发展使人们在每次网购之后都需要了解购买的商品的物流信息

使用免费快递接口查询物流信息

电商,ERP厂商可能需要物流信息接口,对运单号的物流轨迹进行跟踪,通常有些免费的不好用,及时性要求达不到,收费的也太贵了.最近发现一个免费的API接口,及时性非常高,基本上就是实时返回.需要可以联系QQ群  479197998 订阅请求 发起方:本服务用户,即贵公司 地址:http://182.61.40.226:8080/kd-server/poll 通信协议:HTTP 请求类型:POST 字符集:utf-8 请求内容: param=body Body格式(json): { "kd_code&