「CSDNブログ本文をローカルアーカイブにバックアップ」続き
1743 ワード
「CSDNブログ本文をローカルアーカイブにバックアップする」という文章では、CSDN上の博文をハードコーディングでバックアップしたが、効果は悪くないが、多くの人が符号化の問題に遭遇し、これは比較的解決しやすい.符号化問題とは2つの点にほかならない.1つ目は、ブラウザの符号化構成が間違っていることで、ブラウザでローカルに保存されている文章を開くときに文字化けしてしまう.第二に、オペレーティングシステムの符号化構成が間違っているため、ローカルに保存された文章のファイル名が文字化けしてしまう.両者を配置すればよい.私が使っているオペレーティングシステムはMac OS X 10.7中国語版で、ブラウザはFirefoxで、符号化の問題はありませんが、Safariブラウザを使うには手動でGB 2312またはGB 18030に設定する必要があります.
エンコードの問題に加えて、他のブログをサポートしないという問題もあります.この問題は解決しても難しくありません.実際には、ソースコードの大まかなフレームワークが決定されています.残りはラベルとコールバック関数を定義するだけでいいです.javaでは、次のようなスーパークラスを定義するなど、簡単です.
1.ブログタイトル「夜明けの豊作」
2.月ごとにアーカイブされたリンク・チェーン
3.毎月アーカイブされている記事リンクチェーン
4.毎月アーカイブされている各記事
5.各記事の各画像
6.第3クラスのページング表示処理
以上の6つの要素を扱うことができればよいので,以上の要素を扱うスーパークラスSiteを定義し,異なるブログサイトに対してそれぞれ対応する方法を実現すればよいが,なお説明すべきことは,月ごとのインデックス付けができないブログは現在サポートされていないことである.
プロセス全体はhtmlpaserを使用してページを解析する過程で、いくつかのアクションを取ってローカルにダウンロードし、一定のルールで保存します.
エンコードの問題に加えて、他のブログをサポートしないという問題もあります.この問題は解決しても難しくありません.実際には、ソースコードの大まかなフレームワークが決定されています.残りはラベルとコールバック関数を定義するだけでいいです.javaでは、次のようなスーパークラスを定義するなど、簡単です.
abstract class Site {
public String atl_name;
public String atl_value;
public abstract int ParseIMG(NodeList nlist, int index);
public abstract int ParseTITLE(NodeList nlist, int index);
public abstract int ParseAUTHOR(NodeList nlist, int index);
public abstract int ParseMonthArticle(NodeList nlist, int index);
public abstract int ParsePerArticle(NodeList nlist, int index);
public abstract int ParsePAGE(NodeList nlist, int index);
}
は次に、ソースコードの方法を以下のように調整する.public static int parseImg(NodeList nlist, int index, Site st) {
return st. ParseIMG(nlist, index);
}
HandleTextメソッドの論理を小さく変更します.たとえば、次のようなコードは、異なるサブクラスに基づいて異なる論理に定義する必要があります.if (node instanceof Div)
最終的には、異なるウェブサイトに固有の異なるSiteサブクラスを定義し、異なるabstractメソッドをそれぞれ実現すればよい.ここで重要なのは、ブログサイトごとにいくつかの要素を抽象化することです.1.ブログタイトル「夜明けの豊作」
2.月ごとにアーカイブされたリンク・チェーン
3.毎月アーカイブされている記事リンクチェーン
4.毎月アーカイブされている各記事
5.各記事の各画像
6.第3クラスのページング表示処理
以上の6つの要素を扱うことができればよいので,以上の要素を扱うスーパークラスSiteを定義し,異なるブログサイトに対してそれぞれ対応する方法を実現すればよいが,なお説明すべきことは,月ごとのインデックス付けができないブログは現在サポートされていないことである.
プロセス全体はhtmlpaserを使用してページを解析する過程で、いくつかのアクションを取ってローカルにダウンロードし、一定のルールで保存します.