2007年3月20日 星期二

動態網址解析概念


下載

軟體名稱:CNN 新聞資訊檢索
軟體版本:v 1.0
軟體作者:cuteofdragon
軟體授權:免費軟體
發佈時間:2007/03/20

大綱

  1. 瀏覽網頁
  2. 取得標頭
  3. 原始內容
  4. 去除HTML標籤
  5. 正規表達式
  6. 資料儲存/回復


瀏覽網頁

新增WebBrowser元件
webBrowser1.Navigate(textBox1.Text);



取得標頭

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
ASCIIEncoding ascii = new ASCIIEncoding();
headerTextBox.Text=ascii.GetString(response.Headers.ToByteArray());



原始內容

StreamReader sr = new StreamReader(response.GetResponseStream()、Encoding.Default);
string content = sr.ReadToEnd();
bodyTextBox.Text = content;



去除HTML標籤

Regex r = new Regex("<[^>]*>");
string removeTag = r.Replace(content、"").
Replace(" "、" ").
Replace("\r"、" ").
Replace("\n"、" ").
Replace("\t"、" ");



正規表達式

HTML 標籤:<[^>]*>
Hyperlink:<a href=""http://cnn.com[^<]*</a>
Href:http://[^>""]*
Text:>[^<]* Date:\d*\d 網址:http://search.cnn.com/pages/search.jsp? currentPage={0}&query=*&sortby=Date





資料儲存/回復

1.使用List儲存所有Hyperlink
2.做用XmlDocument迭代輸出檔案
3.對所有CNNHyperlinkTag物件建立XmlElement
4.使用XmlDocument讀取檔案
5.重建List




CNNHyperlinkTag

class CNNHyperlinkTag
{
public string Href;
public string Text;
public DateTime Date;
public bool Visited;
}



XmlDocument 輸出

XmlDocument doc = new XmlDocument();
foreach (CNNHyperlinkTag tag in cnnHyperlinkTagList)
{
XmlElement element = doc.CreateElement("CNNHyperlinkTag");
element.SetAttribute("Date"、tag.Date.ToString("d")); element.SetAttribute("Visited"、tag.Visited.ToString());
ement.SetAttribute("Href"、tag.Href);
element.SetAttribute("Text"、tag.Text);
doc.DocumentElement.AppendChild(element);
}
doc.Save(fileName);




XmlDocument 讀取

XmlDocument doc = new XmlDocument();
doc.Load(openFileDialog1.FileName);
XmlNodeList xnl = doc.GetElementsByTagName("CNNHyperlinkTag");
foreach (XmlElement data in xnl)
{
CNNHyperlinkTag tag = new CNNHyperlinkTag();
tag.Date = DateTime.Parse(data.GetAttribute("Date"));
tag.Visited = Boolean.Parse(data.GetAttribute("Visited"));
tag.Href = data.GetAttribute("Href");
tag.Text = data.GetAttribute("Text");
cnnHyperlinkTagList.Add(tag);
}


原文下載

沒有留言: