豚吐露@wiki
HtmlAgilityPack
最終更新:
Bot(ページ名リンク)
-
view
HtmlAgilityPack
HtmlAgilityPack
http://www.nuget.org/packages/HtmlAgilityPack
http://www.nuget.org/packages/HtmlAgilityPack
HTMLに対してセレクタなどの機能を提供してくれる。
~ install ~
VisualStudioのメニューから[ツール]-[NuGet パッケージ マネージャー]-[パッケージ マネージャー コンソール]を選択し、以下を入力。
VisualStudioのメニューから[ツール]-[NuGet パッケージ マネージャー]-[パッケージ マネージャー コンソール]を選択し、以下を入力。
PM> Install-Package HtmlAgilityPack
GUIでやりたかったら、[ツール]-[NuGet パッケージ マネージャー]-[ソリューションの NuGet パッケージの管理]を選択。
左のリストから『オンライン』を選択し、右上の『オンライン の検索』欄へ『HtmlAgilityPack』と入力すると、真ん中の検索結果一覧に『HtmlAgilityPack』ってのが出てくるハズ。
それを選択して、『インストール』ボタンを押下するだけ。
この時、『HtmlAgilityPack』を使うpjを指定するチェックリストが出てくるので、使いたいpjにだけチェックを入れたら良い。
左のリストから『オンライン』を選択し、右上の『オンライン の検索』欄へ『HtmlAgilityPack』と入力すると、真ん中の検索結果一覧に『HtmlAgilityPack』ってのが出てくるハズ。
それを選択して、『インストール』ボタンを押下するだけ。
この時、『HtmlAgilityPack』を使うpjを指定するチェックリストが出てくるので、使いたいpjにだけチェックを入れたら良い。
~ 設定 ~
色々設定があるらしい。
HtmlDocumentに『Option』で始まる設定が色々用意されてる。使いたい機能の設定を変更してからhtmlを読み込む。
HtmlDocumentに『Option』で始まる設定が色々用意されてる。使いたい機能の設定を変更してからhtmlを読み込む。
OptionAddDebuggingAttributes | debug用nodeに属性を追加する | |
OptionAutoCloseOnEnd | 閉じてないタグを閉じる? | |
OptionCheckSyntax | シンタックスチェック | True/False |
OptionComputeChecksum | ||
OptionDefaultStreamEncoding | ||
OptionExtractErrorSourceTextMaxLength | ||
OptionExtractErrorSourceText | ||
OptionFixNestedTags | 閉じてないタグを閉じる? | |
OptionOutputAsXml | ||
OptionOutputOptimizeAttributeValues | ||
OptionOutputOriginalCase | ||
OptionOutputUpperCase | ||
OptionReadEncoding | ||
OptionStopperNodeName | ||
OptionUseIdAttribute | ||
OptionWriteEmptyNodes |
タグが正しく閉じられていなかった場合、挙動がおかしい事があったので注意。
HtmlDocumentにHTML書式のチェックのようなオプションがあったと思う。→
HtmlDocumentにHTML書式のチェックのようなオプションがあったと思う。→
~ 素材の開き方 ~
- HTMLファイルをいじる
- HtmlDocument html = new HtmlDocument();
- html.Load(htmlPath); // htmlPath: 相対or絶対pathでhtmlファイルを指定
- HTML文字列をいじる
- HtmlDocument html = new HtmlDocument();
- html.LoadHtml(htmlStr); // htmlStr: なんらかの方法で取得したHTML文字列
~ nodeの取得方法 ~
- 1つのnodeを取得
html.DocumentNode.SelectSingleNode(xPath);
- 複数のnodeを取得
html.DocumentNode.SelectNodes(xPath);
※xPathには
XPath
形式でnodeを指定する
SelectSingleNode | 該当するタグの最初の1つだけが取得される。 |
SelectNodes | 該当するタグがcollectionで取得される。対象が1つでもcollectionで取得される。 collectionなので、取得した後LINQやforeachを使うことができる。 |
以下、具体的な取得方法。
~ nodeの指定方法 ~
- classを指定して取得
e.g.) hogeClassというclassが付いてるtableタグの内容を取得
var nodes = html.DocumentNode.SelectNodes("//table[@class='hogeClass']");
- idを指定して取得
e.g.) hogeIdというIDが付いてるtableタグの内容を取得
var node = html.DocumentNode.SelectSingleNode("//table[@id='hogeId']");
- タグを指定して取得
e.g.) divタグを取得
var nodes = html.DocumentNode.SelectNodes("//div");
- 上記の条件を複合指定
e.g.) classにhogeが付いてるdivタグの下のtableタグの内容を取得
var node = html.DocumentNode.SelectSingleNode("//div[@class='hoge']/table");
~ 取ったnodeの使い方 ~
- nodeの値
var val = node.InnerHtml;
- nodeの任意の属性
e.g.) classの取得
var val = div.GetAttributeValue("class", "");
※第2引数は取れなかった場合に返される値。string、bool、intで指定できる。
更新日: 2014年12月22日 (月) 15時58分26秒