私はすでにユーザーに特定の関心を引き起こしたData Extracting SDKについてhabrで話しました 。 それ以来、多くのおいしい機能が追加されました。それらについて少しお話ししたいと思います。 例として、小さなアプリケーションが実装されました-HabraPDFReaderは、オフラインで読むためにhabratopikをPDFファイルに保存するように設計されています。 途中で、実装の複雑さについて説明します。
アルゴリズム
アルゴリズムは非常に簡単です。
1.処理されたページの数を選択します。
2.最近のトピックのリストをダウンロードします。
3.気に入ったトピックにマークを付けます。
4. PDFファイルに保存します。
より詳細に。
アプリケーションを作成する
これは、VS2008 SP1のC#バージョン3.5で記述されたWindowsアプリケーションになります。
外観を図に示します。
最近のトピックのリストを取得します(最初のページから):
UriHtmlProcessor proc = new UriHtmlProcessor( new Uri ( "http://habrahabr.ru/new/page1/" ));
proc.Initialize();
var links = from l in proc.Links
where l.Class == "topic" && EndsWithInt(l.Href) == true
select new ResultItem{
Link = l.Href,
TopicName = l.Text.ToWindows1251()
};
* This source code was highlighted with Source Code Highlighter .
Data Extracting SDKはDOMツリーへのクエリを作成することを学習したため 、すべてのLinqチャームを使用して必要なリンクを取得できます。 私たちの場合、クラスが「トピック」に等しいすべてのリンクを取得し、リンクは数字で終わります(これは、#habracutや#commentなどのリンクを除外するために必要です)。
リンクによるテキストのPDFファイルへの変換
この機能はVSTOを使用して簡単に実装できますが、MS Officeに接続したくありませんでした。 そのため、 Html2Pdfサービスが見つかりました。これを使用して、PDFファイルを受け取ります。
コードは次のとおりです。
UriHtmlProcessor proc = new UriHtmlProcessor("<www.htm2pdf.co.uk/?url= ");
proc.Initialize();
var pdf = proc.Links.Where(ll => ll.Text == "Download PDF" ).FirstOrDefault();
if (pdf != null )
{
Uri uri = pdf.Href.FixUrl( new Uri ( "http://www.htm2pdf.co.uk/" ));
proc.Download(uri, Path.Combine(<, >, "_.pdf" ));
}
* This source code was highlighted with Source Code Highlighter .
したがって、Habrをオフラインで読むためのPDFセットを取得できます。
プログラム実行後のスクリーンショット:
SDKプロジェクトアドレス: http : //extracting.codeplex.com/ (古いバージョンはまだあります)
ダウンロードHabraPDFReader
コメントや提案を待っています!