生活随笔
收集整理的這篇文章主要介紹了
DHL 快递跟踪查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
思路描述:主要使用正則表達式解析。
返回一個跟蹤步驟列表。
public class TrackingData ????{ ????????public string time { get; set; } ????????public string context { get; set; } ????} ????public class DHLExpressTrackingHelper ????{ ????????private static string urlFormat = "http://webtrack.dhlglobalmail.com/?trackingnumber={0}"; ????????public static List<TrackingData> GetTrackingData(string trackCode) ????????{ ????????????//trackCode = "A150529020091"; ????????????WebMocker dhlMocker = new WebMocker(); ????????????var url = string.Format(urlFormat, trackCode); ????????????var html = dhlMocker.Get(url); ????????????//1 ????????????var patternOLTag = "<ol.*?>(?<olvalue>.*?)</ol>"; ????????????var match = Regex.Match(html, patternOLTag, RegexOptions.Multiline | RegexOptions.Singleline); ????????????if (match.Success) ????????????{ ????????????????var olValue = match.Groups["olvalue"].Value; ????????????????return ParseTrackingData(olValue); ????????????} ????????????return new List<TrackingData>(); ????????} ????????private static List<TrackingData> ParseTrackingData(string olValue) ????????{ ????????????var patternLITag = "<li.*? class=\"(?<className>.*?)\".*?>(?<content>.*?)</li>"; ????????????var list = new List<TrackingData>(); ????????????string datePrefix = null; ????????????foreach (Match item in Regex.Matches(olValue, patternLITag, RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.IgnoreCase)) ????????????{ ????????????????var className = item.Groups["className"].Value; ????????????????var content = item.Groups["content"].Value; ????????????????if (className == "timeline-date") ????????????????{ ????????????????????datePrefix = content; ????????????????} ????????????????else if (className.Contains("timeline-event")) ????????????????{ ????????????????????var pp = "<div.*?class=\"(?<divClassName>.*?)\".*?>(?<divContent>.*?)</div>"; ????????????????????TrackingData trackingData = null; ????????????????????foreach (Match subItem in Regex.Matches(content, pp, RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.IgnoreCase)) ????????????????????{ ????????????????????????var divClassName = subItem.Groups["divClassName"].Value.Trim(); ????????????????????????var subContent = subItem.Groups["divContent"].Value.Trim(); ????????????????????????if (divClassName == "timeline-time") ????????????????????????{ ????????????????????????????subContent = Regex.Replace(subContent, "<[^<]*>", ""); ????????????????????????????trackingData = new TrackingData(); ????????????????????????????trackingData.time = datePrefix + " " + subContent; ????????????????????????} ????????????????????????else if (divClassName == "timeline-location") ????????????????????????{ ????????????????????????????trackingData.context += subContent + " "; ????????????????????????} ????????????????????????else if (divClassName == "timeline-description") ????????????????????????{ ????????????????????????????trackingData.context += subContent + " "; ????????????????????????} ????????????????????????//else if (divClassName == "timeline-location timeline-location-responsive") ????????????????????????//{ ????????????????????????// trackingData.Description += subContent; ????????????????????????//} ????????????????????} ????????????????????list.Add(trackingData); ????????????????} ????????????} ????????????//foreach (var item in list) ????????????//{ ????????????// Console.WriteLine(item.DateString + "--" + item.Description); ????????????//} ????????????return list; ????????} ????}
轉載于:https://www.cnblogs.com/pengzhen/p/4832787.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的DHL 快递跟踪查询的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。