【資料抓取】HTML解析
阿新 • • 發佈:2019-02-12
背景
通過模擬登陸,我獲取了相應網頁資訊,接下來要做的就是解析html,從裡面篩選出自己需要的內容
這個流程很清晰,獲取資料-篩選資料-儲存資料-顯示資料
功能說明
對html程式碼進行解析,篩選出需要的內容
ps.本次用的是上次模擬登陸儲存的html文字,這兩個模組還沒有組合
程式碼
html程式碼
<html>
<head>
<title>事件屬性</title>
<link href="/resource.ashx/635709062375475691/3/css/page.css" rel="stylesheet" />
<script src="//resource.ashx/635709062375475691/3/javascript/common.js"></script>
</head>
<body>
<form method="post" action="eventdialog.aspx?eventId=2046" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA1MzY5OTk4Nw9kFgICAQ9kFgxmDw8WAh4EVGV4dAUG5rWP6KeIZGQCAQ8PFgIfAAUJMjAxNy8yLzIyZGQCAg8PFgIfAAUJ5p2O6Z2S5p2+ZGQCAw8PFgIfAAUIMTg6NDM6MDBkZAIEDw8WAh8ABSxQYXRoOiAKCVtGaWxlVmlzdGEt5rWL6K+V5Yy6XTpc5a2m5pyv6LWE5paZCmRkAgUPDxYCHwAFBuehruiupGRkZJsHJooEt4hg7kT8NGuc6OGX0d3tGhbCt6nnrpHoXyhd" />
</div>
<div class="aspNetHidden">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwKhuZq6DQKAtdPXAQKM54rGBumKkbiesZBA0vTMtI/UD5TTngaEDnEb6xk9TvAzVzh2" />
</div>
<table cellpadding="0" cellspacing="10" border="0" style="width: 100%">
<tr>
<td style="width: 50px">型別:</td>
<td><span id="LabelType">瀏覽</span></td>
<td style="width: 50px">日期:</td>
<td><span id="LabelDate">2017/2/22</span></td>
</tr>
<tr>
<td>使用者:</td>
<td><span id="LabelUser">李小明</span></td>
<td>時間:</td>
<td><span id="LabelTime">18:43:00</span></td>
</tr>
<tr>
<td colspan="4">
描述:<br />
<textarea name="TextBoxDescription" rows="2" cols="20" wrap="off" readonly="readonly" id="TextBoxDescription" style="width: 360px; height: 150px; resize:none">
Path:
[222伺服器]:\Java資料
</textarea>
</td>
</tr>
</table>
<div class="gt-formBottom"><input type="submit" name="Button1" value="確認" onclick="elementDialog.close(); return false;" id="Button1" style="width: 80px" /></div>
</form>
</body>
</html>
後臺程式碼
static void Main(string[] args)
{
//讀取html文字
StreamReader sr = new StreamReader("E:\\【Project】\\資料抓取\\html文字.txt", Encoding.Default);
String htmltxt = sr.ReadToEnd();
sr.Close();
//HtmlDocument載入html文字
HtmlDocument htmldoc = new HtmlDocument();
htmldoc.LoadHtml(htmltxt);
//提取html中的需要欄位
HtmlNode type_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[1]/td[2]/span");
HtmlNode date_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[1]/td[4]/span");
HtmlNode user_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[2]/td[2]/span");
HtmlNode time_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[2]/td[4]/span");
HtmlNode path_node = htmldoc.DocumentNode.SelectSingleNode("/html/body/table/tr[3]/td/textarea");
//輸出提取的欄位
Console.WriteLine(date_node.InnerText);
Console.WriteLine(time_node.InnerText);
Console.WriteLine(user_node.InnerText);
Console.WriteLine(type_node.InnerText);
Console.WriteLine(path_node.InnerText.Replace("\r", "").Replace("\n", "").Replace("\t", ""));
Console.ReadKey();
}
問題 & 解決
小結
隨著獲取資料的成功,接下來的工作就是處理、儲存、顯示
技術點實現之後,重新整理需求,再合併模組,優化整個系統
關於html解析, 現在嘗試的就這些,根據系統需求後面繼續研究吧