我一直試圖解析一段時間php生成的網頁(不是網站)。我嘗試通過C#中的HTMLAgility和PHP來使用xpath進行解析。起初我以爲我不是正確解析,由於不正確的值。從web腳本解析腳本更改源代碼內容?
後來,我發現實際上我正確解析它。但是在該頁面中有一個腳本正在更改加載時的值。怎麼樣,我不知道。
我是新來解析,所以這裏是根據我發生了什麼:
我下載內容的源代碼。我想分析的部分是有點像這樣:
<b id="solved_b">0</b>
頁面加載時,在源代碼中的腳本時,我解析使用XPath的值變化大於0
以外的東西,原始值,即0被解析,而不是腳本更改值。
那麼,我該如何解析更改後的值而不是原來的值呢?
我試圖解析頁面 http://felix-halim.net/uva/hunting.php?id=59756
這裏是HTMLAgility的片段:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HtmlAgilityPack;
namespace ParseFelix {
class WebParser {
string webUrl;
public WebParser(string url) {
webUrl = "http://felix-halim.net/uva/hunting.php?id=59756";
HtmlWeb htmlWeb = new HtmlWeb();
HtmlDocument htmldoc = htmlWeb.Load(webUrl);
var username = htmldoc.DocumentNode.SelectSingleNode("/html/body/div/h2/i");
var submittedStats = htmldoc.DocumentNode.SelectSingleNode(".//*[@id=\"submissions_b\"]");
string content = htmldoc.DocumentNode.InnerHtml;
//System.IO.File.WriteAllText("D:\\exp\\felix\\parsed.txt", content);
var acceptedStats = htmldoc.DocumentNode.SelectSingleNode(".//*[@id=\"solved_b\"]");
Console.WriteLine("Username is {0}, you submitted {1} solutions, and {2} were accepted", username.InnerText, submittedStats.InnerText, acceptedStats.InnerText);
}
}
}
我會盡力的。感謝您的回覆:D – LordAmit 2011-04-15 05:47:37
可以請您提供一些關於如何閱讀操作DOM的教程? – LordAmit 2011-04-15 07:02:05
不像前面提到的那樣,你必須編寫自己的JS解析器,並連接到你不想聽的事件。 – 2011-04-15 07:29:14