public void ExecuteHref() { while (iReply < iMax) { log4net.WriteLogFile("第层" + iReply + "任务,开始!"); List <JHref> KeyList = PageList[iReply - 1]; for (int i = KeyList.Count - 1; i >= 0; i--) { JHref vTask = KeyList[i]; String cUrl = vTask.Url; String cPageHtml = getPageHtml(cUrl); List <JHref> rs = getHerfList(vTask); AddHref(iReply + 1, rs); try { Thread.Sleep(100); } catch (Exception ex) { } } log4net.WriteLogFile("第层" + iReply + "任务,结束!"); PageList[iReply - 1].Clear(); iReply++; try { Thread.Sleep(100); } catch (Exception ex) { } } }
public String getPageContent(JHref vTask, String cExpr) { String cUrl = vTask.Url; String cHtml = getPageHtml(cUrl); return(getMatchText(cHtml, cExpr)); }
public int AddHref(int iLayer, JHref rowKey) { log4net.WriteLogFile("第" + iLayer + "层,添加链接" + rowKey.UrlName); AppendHref(rowKey); PageList[iLayer - 1].Add(rowKey); return(PageList[iLayer - 1].Count - 1); }
public int AddHref(int iLayer, List <JHref> KeyList) { for (int i = 0; i < KeyList.Count; i++) { JHref rowKey = KeyList[i]; AddHref(iLayer, rowKey); } return(PageList[iLayer - 1].Count - 1); }
private void AppendHref(JHref rowKey) { // InvokeRequired需要比较调用线程ID和创建线程ID // 如果它们不相同则返回true if (this.txtResult.InvokeRequired) { AppendHref_delegate d = new AppendHref_delegate(AppendHref); this.Invoke(d, new object[] { rowKey }); } else { txtResult.Text = rowKey.UrlName; } }
private void btnAnalyse_Click(object sender, EventArgs e) { JHref vTask = new JHref(); vTask.Url = this.txtUrl.Text.Replace("{PAGE_NO}", ""); vTask.UrlName = "0"; vTask.Layer = 1; vTask.UrlID = StringEx.getString(ActiveHref.UrlID); vTask.Prefix = ActiveHref.Prefix; AddHref(1, vTask); Thread vThread = new Thread(ExecuteHref); vThread.Start(); }
private void button5_Click(object sender, EventArgs e) { String cPAGE_VAL = ActiveHref.PageVal; int iLayer = StringEx.getInt(this.ActiveHref.Layer); for (int i = 0; i < iLayer; i++) { cPAGE_VAL = cPAGE_VAL.Replace("{PAGE_NO}", i.ToString()); cPAGE_VAL = ExecuteScript(cPAGE_VAL); JHref vTask = new JHref(); vTask.Url = this.txtUrl.Text; vTask.Url = vTask.Url.Replace("{PAGE_NO}", cPAGE_VAL); vTask.UrlName = "0"; vTask.Layer = i + 1; vTask.Prefix = this.ActiveHref.Prefix; List <JHref> rs = getHerfList(vTask); for (int k = 0; k < rs.Count; k++) { var voKey = rs[k]; String cLINK_TEXT = StringEx.getString(voKey.UrlName); if (!String.IsNullOrWhiteSpace(cLINK_TEXT)) { String cLINK_HREF = StringEx.getString(voKey.Url); if (String.IsNullOrEmpty(cLINK_HREF)) { continue; } if (!cLINK_HREF.StartsWith(vTask.Prefix)) { continue; } if (HrefList.IndexOf(cLINK_HREF) == -1) { HrefList.Add(cLINK_HREF); JHref rowKey = new JHref(); rowKey.UrlName = cLINK_TEXT; rowKey.Prefix = vTask.Prefix; rowKey.Url = cLINK_HREF; rowKey.UrlID = vTask.UrlID; log4net.WriteLogFile(cLINK_HREF + ":" + cLINK_TEXT); rowKey.Layer = vTask.Layer + 1; } } } } }
private void btnConfigLayer_Click(object sender, EventArgs e) { frmRule vDialog = new frmRule(); if (vDialog.ShowDialog() == DialogResult.OK) { ActiveHref = new JHref(); ActiveHref.UrlID = vDialog.txtUrlID.Text; ActiveHref.Layer = StringEx.getInt(vDialog.txtLayer.Text); ActiveHref.Match = vDialog.txtMatch.Text; ActiveHref.Prefix = vDialog.txtPrefix.Text; ActiveHref.PageVal = vDialog.txtPageVal.Text; ActiveHref.UrlName = vDialog.txtUrlName.Text; ActiveHref.Url = vDialog.txtUrlName.Text; } }
public List <JHref> getHerfList(JHref vTask) { String cUrl = vTask.Url; String cPageHtml = getPageHtml(cUrl); Document doc = NSoupClient.Parse(cPageHtml); var rs = doc.Select(ActiveHref.Match); List <JHref> KeyList = new List <JHref>(); for (int i = 0; i < rs.Count; i++) { var voKey = rs[i]; String cLINK_TEXT = StringEx.getString(voKey.Text()); if (!String.IsNullOrWhiteSpace(cLINK_TEXT)) { String cLINK_HREF = StringEx.getString(voKey.Attr("abs:href")); if (String.IsNullOrEmpty(cLINK_HREF)) { continue; } if (!cLINK_HREF.StartsWith(vTask.Prefix)) { continue; } if (HrefList.IndexOf(cLINK_HREF) == -1) { HrefList.Add(cLINK_HREF); JHref rowKey = new JHref(); rowKey.UrlName = cLINK_TEXT; rowKey.Prefix = vTask.Prefix; rowKey.Url = cLINK_HREF; rowKey.UrlID = vTask.UrlID; log4net.WriteLogFile(cLINK_HREF + ":" + cLINK_TEXT); rowKey.Layer = vTask.Layer + 1; KeyList.Add(rowKey); } } } return(KeyList); }