///// <summary> ///// ///// </summary> ///// <param name="进出口标志"></param> ///// <param name="tdh"></param> ///// <returns></returns> //private string GetBoxUrlByTdh(ImportExportType 进出口标志, string tdh) //{ // return m_url + "?" + CreatePostData(进出口标志, null, null, null, null, null, null, null, tdh); //} ///// <summary> ///// ///// </summary> ///// <param name="进出口标志"></param> ///// <param name="xh"></param> ///// <returns></returns> //private string GetBoxUrlByXh(ImportExportType 进出口标志, string xh) //{ // return m_url + "?" + CreatePostData(进出口标志, null, null, null, xh, null, null, null, null); //} /// <summary> /// /// </summary> /// <param name="报关单编号"></param> /// <returns></returns> public IList <流转状态数据> 查询流转状态数据(string 报关单编号) { IList <流转状态数据> ret = new List <流转状态数据>(); try { string postData = m_报关单流转Data.Replace("#报关单编号#", 报关单编号); string htmlInfo = base.PostToString(m_报关单流转Url, postData); if (htmlInfo.Contains("/portalframework/um/Login.do")) { Login(); htmlInfo = base.PostToString(m_报关单流转Url, postData); } MatchCollection mc = m_报关单流转regex.Matches(htmlInfo); if (mc.Count % 5 != 0) { throw new WebFormatChangedException("nbeport html format is changed"); } for (int i = 1; i < mc.Count / 5; ++i) { ret.Add(new 流转状态数据(WebProxy.RemoveSpaces(mc[i * 5 + 2].Groups[1].Value), Convert.ToDateTime(WebProxy.RemoveSpaces(mc[i * 5 + 4].Groups[1].Value)))); //s = base.RemoveSpaces(s); } } catch (Exception) { //ServiceProvider.GetService<IExceptionProcess>().ProcessWithNotify(ex); } return(ret); }
internal static string Parse查询进场码头(string htmlInfo) { HtmlAgilityPack.HtmlDocument _html = new HtmlAgilityPack.HtmlDocument(); _html.LoadHtml(htmlInfo); HtmlAgilityPack.HtmlNode node_td = _html.DocumentNode.SelectSingleNode("/html[1]/body[1]/center[1]/div[2]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[2]/td[6]"); if (node_td == null) { throw new WebFormatChangedException("PageSource format for 运抵报告对比进场码头 is changed"); } return(WebProxy.RemoveSpaces(node_td.InnerText)); }
/// <summary> /// 返回提单号、 放行时间、报关单号 /// </summary> /// <param name="webContent"></param> /// <returns></returns> internal static List <List <string> > 查询海关放行时间(string webContent) { //<tr align="center"> // <TD height="24" bgcolor="#E9F1FC" class="dblue12">NO.</TD> // <TD height="24" valign="middle" bgcolor="#FFFFFF" class="dblue12">集装箱号</TD> // <TD height="24" valign="middle" bgcolor="#E9F1FC" class="dblue12">英文船名</TD> // <TD height="24" valign="middle" bgcolor="#FFFFFF" class="dblue12">航次</TD> // <TD height="24" valign="middle" bgcolor="#E9F1FC" class="dblue12">航向</TD> // <TD height="24" valign="middle" bgcolor="#FFFFFF" class="dblue12">船舶UN代码</TD> // <TD height="24" valign="middle" bgcolor="#E9F1FC" class="dblue12">提单号</TD> // <TD height="24" valign="middle" bgcolor="#FFFFFF" class="dblue12">放行时间</TD> // <TD height="24" valign="middle" bgcolor="#E9F1FC" class="dblue12">海关放行号</TD> // <TD height="24" valign="middle" bgcolor="#FFFFFF" class="dblue12">码头/堆场</TD> //</TR> //<TR align="center" bgColor="#FFFFFF"}> // <td height="24" class="dblue12">1</td> // <TD height="24" class="dblue12">IMTU9085962 </TD> // <TD height="24" class="dblue12">EVERUNIQUE </TD> // <TD height="24" class="dblue12">0167W</TD> // <TD height="24" class="dblue12">E </TD> // <TD height="24" class="dblue12">UN9116606</TD> // <TD height="24" class="dblue12">EGLV143083852506</TD> // <TD height="24" class="dblue12">2010-11-09 13:54:41</TD> // <TD height="24" class="dblue12">310120100518987733 </TD> // <TD height="24" class="dblue12">港吉(四期)</TD> //</TR> //<TR align="center" bgColor="#E2EBF1"> // <td height="24" class="dblue12">2</td> // <TD height="24" class="dblue12">IMTU9085962 </TD> // <TD height="24" class="dblue12">CSCLASIA </TD> // <TD height="24" class="dblue12">0086E</TD> // <TD height="24" class="dblue12">I </TD> // <TD height="24" class="dblue12">UN9285976</TD> // <TD height="24" class="dblue12"></TD> // <TD height="24" class="dblue12">2010-11-02 15:02:30</TD> // <TD height="24" class="dblue12">31042010I170002364 </TD> // <TD height="24" class="dblue12">北二集司(三期) // </TD> //</TR> List <List <string> > returnList = new List <List <string> >(); HtmlAgilityPack.HtmlDocument _html = new HtmlAgilityPack.HtmlDocument(); _html.LoadHtml(webContent); HtmlAgilityPack.HtmlNode node_table = _html.DocumentNode.SelectSingleNode("/html[1]/body[1]/table[1]/tr[4]/td[1]/table[1]"); int trCount = m_tr.Matches(node_table.InnerHtml).Count + m_tr1.Matches(node_table.InnerHtml).Count; // 数据行数,需再加上列头行和翻页行 for (int i = 2; i < trCount + 2; i++) { // 提单号 HtmlAgilityPack.HtmlNode node_td_tdh = _html.DocumentNode.SelectSingleNode( string.Format("/html[1]/body[1]/table[1]/tr[4]/td[1]/table[1]/tr[{0}]/td[7]", i)); // 放行时间 HtmlAgilityPack.HtmlNode node_td_fxsj = _html.DocumentNode.SelectSingleNode( string.Format("/html[1]/body[1]/table[1]/tr[4]/td[1]/table[1]/tr[{0}]/td[8]", i)); // 报关单号 HtmlAgilityPack.HtmlNode node_td_bgdh = _html.DocumentNode.SelectSingleNode( string.Format("/html[1]/body[1]/table[1]/tr[4]/td[1]/table[1]/tr[{0}]/td[9]", i)); List <string> dataList = new List <string>(); dataList.Add(WebProxy.RemoveSpaces(node_td_tdh.InnerHtml)); dataList.Add(WebProxy.RemoveSpaces(node_td_fxsj.InnerHtml)); dataList.Add(WebProxy.RemoveSpaces(node_td_bgdh.InnerHtml)); returnList.Add(dataList); } return(returnList); }
internal static 报关单数据 Parse查询报关单数据(string htmlInfo, string 报关单编号) { int idx1 = htmlInfo.IndexOf(@"<div id=""mainlay"""); int idx2 = htmlInfo.IndexOf(@"<table"); int idx3 = 0; if (idx1 == -1 || idx1 == -1) { throw new WebFormatChangedException("Invalid Html"); } string innerHtml = htmlInfo.Substring(idx1, idx2 - idx1); MatchCollection mc = m_regexDetail.Matches(innerHtml); List <string> ss = new List <string>(); foreach (Match m in mc) { ss.Add(WebProxy.RemoveSpaces(m.Groups[1].Value)); } int idx = ss.IndexOf(报关单编号); if (idx == -1) { throw new WebFormatChangedException("nbedi format changed!"); } string xh = ""; string s = ss[idx + 30]; if (!string.IsNullOrEmpty(s)) { idx1 = s.IndexOf('*'); idx2 = s.IndexOf('('); idx3 = s.IndexOf(')'); xh = s.Substring(0, idx1 - 1).Trim(); } Match m1 = m_regexXh.Match(htmlInfo); if (m1 == null) { throw new WebFormatChangedException("nbedi format is changed"); } Match m2 = m_regexTgdh.Match(htmlInfo); string tgdh = null; if (m2 != null && m2.Groups.Count > 0) { tgdh = WebProxy.RemoveSpaces(m2.Groups[1].Value); } string xh1 = WebProxy.RemoveSpaces(m1.Groups[1].Value); if (!string.IsNullOrEmpty(xh1)) { xh += "," + xh1; } int xl = 0; int bxl = 0; if (s.Contains("(")) { xl = string.IsNullOrEmpty(s) ? 0 : Convert.ToInt32(s.Substring(idx1 + 1, idx2 - idx1 - 1).Trim()); bxl = string.IsNullOrEmpty(s) ? 0 : Convert.ToInt32(s.Substring(idx2 + 1, idx3 - idx2 - 1).Trim()); } else { xl = string.IsNullOrEmpty(s) ? 0 : Convert.ToInt32(s.Substring(idx1 + 1).Trim()); } //报关员 string bgy = null; Match m3 = m_regexBgy.Match(htmlInfo); if (m3 != null && m3.Groups.Count > 0) { bgy = WebProxy.RemoveSpaces(m3.Groups[1].Value); } //报关公司 HtmlAgilityPack.HtmlDocument _html = new HtmlAgilityPack.HtmlDocument(); _html.LoadHtml(htmlInfo); HtmlAgilityPack.HtmlNode node_bgdh = _html.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]/div[39]/div[1]"); string bggs = WebProxy.RemoveSpaces(node_bgdh.InnerText); return(new 报关单数据(ss[0], ss[idx], ss[idx + 11], xh, string.IsNullOrEmpty(ss[idx + 5]) ? null : new DateTime?(Convert.ToDateTime(ss[idx + 5])), ss[idx + 6], ss[idx + 12], ss[idx + 20], xl, bxl, htmlInfo, 1, tgdh, bgy, bggs)); }
internal static IList <集装箱数据> Parse查询集装箱数据(string htmlInfo) { List <集装箱数据> xhs = new List <集装箱数据>(); HtmlAgilityPack.HtmlDocument _html = new HtmlAgilityPack.HtmlDocument(); _html.LoadHtml(htmlInfo); HtmlAgilityPack.HtmlNode node_table = _html.DocumentNode.SelectSingleNode("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]"); int trCount = new Regex("<tr>").Matches(node_table.InnerHtml).Count; HtmlAgilityPack.HtmlNode node_tr = _html.DocumentNode.SelectSingleNode("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[1]"); int thCount = new Regex("<th").Matches(node_tr.InnerHtml).Count; /* <td width="120">MANHATTAN</td> * <td width="60">1042S</td> * <td width="100">CLHU8379490</td> * <td width="30">45</td> * <td width="40">整箱</td> * <td>NLBDS046542</td> * <td>11/12/2010 10:37:00 PM</td> * <td>5H1863</td> * <td>BLCT</td> * <td>11/12/2010 10:44:03 PM</td> * <td class="table_content text_center" align="center" width="70"> * <a id="GridView1_ctl02_lbt_YP" href="javascript:__doPostBack('GridView1$ctl02$lbt_YP','')">预配舱单</a> * </td> */ for (int i = 2; i <= trCount; i++) // 去掉列头行 { HtmlAgilityPack.HtmlNode node_td船名 = _html.DocumentNode.SelectSingleNode(string.Format("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[{0}]/td[1]", i)); HtmlAgilityPack.HtmlNode node_td航次 = _html.DocumentNode.SelectSingleNode(string.Format("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[{0}]/td[2]", i)); HtmlAgilityPack.HtmlNode node_td箱号 = _html.DocumentNode.SelectSingleNode(string.Format("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[{0}]/td[3]", i)); HtmlAgilityPack.HtmlNode node_td箱型 = _html.DocumentNode.SelectSingleNode(string.Format("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[{0}]/td[4]", i)); HtmlAgilityPack.HtmlNode node_td提单号 = null; HtmlAgilityPack.HtmlNode node_td运抵时间 = null; // 未知原因,整箱那列时有时无 if (thCount == 11) { node_td提单号 = _html.DocumentNode.SelectSingleNode(string.Format("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[{0}]/td[6]", i)); node_td运抵时间 = _html.DocumentNode.SelectSingleNode(string.Format("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[{0}]/td[7]", i)); } else { node_td提单号 = _html.DocumentNode.SelectSingleNode(string.Format("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[{0}]/td[5]", i)); node_td运抵时间 = _html.DocumentNode.SelectSingleNode(string.Format("/html[1]/body[1]/center[1]/div[3]/fieldset[1]/table[1]/tr[1]/td[1]/div[1]/table[1]/tr[{0}]/td[6]", i)); } xhs.Add(new 集装箱数据(null, WebProxy.RemoveSpaces(node_td船名.InnerText), WebProxy.RemoveSpaces(node_td航次.InnerText), WebProxy.RemoveSpaces(node_td箱号.InnerText), null, DateTime.Parse(node_td运抵时间.InnerText), null, null, WebProxy.RemoveSpaces(node_td提单号.InnerText), null, WebProxy.RemoveSpaces(node_td箱型.InnerText))); } return(xhs); }