とあるC#のスクレイピングソフトの記録 1-2
ちと必要にかられて自分で使うソフト作る事に。
また同じようなケースが発生するかもしれないので、
地道に記録しておく事にした(´・ω・)ス
前回までの記録
某サイトから情報を抜き出し、自分のMySQLへ入れ込む。
某サイトのパラメーターを確認。
変数を持たせるのか?どうするのかと思案して、Webbrowserを配置・・
//例のごとく作業しながら更新中( ; ̄ω ̄)ゞ
それぞのパラメーター値は非常に多いし、ループさせる必要があるので、
ここは変数を使う事にする。
int [] ad = new int[] { 値,値 } ;
となるが、ここも値が多すぎるので、ソースに書いていいか不明だが、
やはり外部ファイルを使う事にする。
外部ファイルを読んで、その値に入れむ。
13:40 作業開始。まずは外部ファイルを用意。
14:12 それぞれの読み込ませ(´・ω・)ス
一行づつ読み込ませたいので、
string[] area = File.ReadAllLines("ファイル.txt",
System.Text.Encoding.GetEncoding("Shift_JIS"));
で、配列で処理。
他のテキストも初っ端読んでおく。
14:17 用意完了。だが、個別の入れ込むデータにカラムが足りないので、用意しておく。
テーブル構造は
-- テーブルの構造 `individual`
DROP TABLE IF EXISTS `individual`;
CREATE TABLE IF NOT EXISTS `individual` (
`id` int(7) NOT NULL,
`name` varchar(45) default NULL,
`postalcode3` int(3) default NULL,
`postalcode4` int(4) default NULL,
`add` varchar(45) default NULL,
`TEL` varchar(15) default NULL,
`FAX` varchar(15) default NULL,
`website` varchar(45) default NULL,
`email` varchar(45) default NULL,
`erea` varchar(45) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
としたが、スクレイピングで引っ張ってくるとカテゴリ自体、
同時に`individual`と、カテゴリに入れるのがキツイので、
//分からなくなるので、
ここにカテゴリを持たせる。
カテゴリの構造は、
-- テーブルの構造 `categories`
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) NOT NULL,
`parents_id` varchar(45) default NULL,
`name` varchar(45) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
///として単純にした。
ここで、ちと考えてみるが、
カテゴリは2段になっていて、検索する場合、
1.individualのテーブルとcategoriesをジョイントさせて検索結果
2.individualのテーブルに親カテゴリ直で検索結果。
構造的には上のほうがテクニカルだが、どう考えて2のほうが早い。
そうなれば、individualに二段ともカテゴリを持たせて、
個別の表示という部分で、カテゴリテーブルを使うか。
で、修正後
-- テーブルの構造 `individual`
CREATE TABLE IF NOT EXISTS `individual` (
`id` int(7) NOT NULL,
`name` varchar(45) default NULL,
`postalcode3` int(3) default NULL,
`postalcode4` int(4) default NULL,
`add` varchar(45) default NULL,
`TEL` varchar(15) default NULL,
`FAX` varchar(15) default NULL,
`website` varchar(45) default NULL,
`email` varchar(45) default NULL,
`erea` varchar(45) default NULL,
`categories_id` int(11) NOT NULL,
`parents_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- テーブルの構造 `categories`
--
CREATE TABLE IF NOT EXISTS `categories` (
`categories_id` int(11) NOT NULL,
`parents_id` int(11) default NULL,
`name` varchar(45) default NULL,
PRIMARY KEY (`categories_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
とう形でとりあえず( ; ̄ω ̄)ゞ
