WEB系技術電脳日記 -479ページ目

バカサミット 本日開催

$WEB系技術電脳日記


本日、2011年10月8日(土) 12:30 開場 (開演13:00~)から、池袋の東京総合美容専門学校で
以前在籍させていただいたカメレオン社の福留氏がバカサミットを開催する
今回で二回目で、昨日前夜祭でJ-WAVEで宣伝かねて出演していた模様。
大分面白そうなサミットみたいな雰囲気。
話題性バンバン露出させるのはいつも勉強になったり。

私も震災のアレが落ち着いたら、またカンファレンス再開したい所。


土曜日(´・ω・)ス

土曜日(´・ω・)ス
昨日はデカイウィスキーを買って、
炭酸で割りつつ飲み。
テレビをみながら・・・で記憶が途切れた。
7~8杯目ぐらいまで覚えているが・・。
それはともかく今日はいい天気。

午後に埼玉まで出撃があるので、
適度にそれまでは作業。
そんな平和な土曜日の記録。



引き籠り準備(´・ω・)ス

photo:01



ナイス四リッター
photo:02



確保(´・ω・)ス
これで暫く引き籠り可能。
仕事が無ければ、完全に家から出ない(´・ω・)ス




iPhoneからの投稿

業務スーパーへ

photo:01



食材買い出しに。
お酒も買わないと、、、



iPhoneからの投稿

正規表現で漢字やひらがな、カタカナを判定(´・ω・)ス

何気に苦労した(´・ω・)ス


new System.Text.RegularExpressions.Regex(@"\b\p{IsHiragana}+\b");
new System.Text.RegularExpressions.Regex(@"\p{IsCJKUnifiedIdeographs}");
new System.Text.RegularExpressions.Regex(@"\p{IsKatakana}");
※省略ありで( ; ̄ω ̄)ゞ


で、正規表現を用意して、


WebClient web = new WebClient();
string html = web.DownloadString(url);

//HtmlDocumentクラスにHTMLをセット
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);


で格納。
その後に、

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes(@"
/html[1]/body[1]/div[1]/div[2]/div[4]/div[1]/div[1]/div/div[1]/div[1]/h2[1]/a[1]|
/html[1]/body[1]/div/div/div/div/div/div/div/table/tr/td|
/html[1]/body[1]/div/div/div/div/div/div/div[1]/h2[1]/a[1]|
/html[1]/body[1]/div[1]/div[2]/div[4]/div[1]/div[1]/div/table/tr/td");


で、Xpathで指定。

foreach (HtmlNode node in nodes)
{
string 文字 = node.InnerText.Substring(0, 1);
System.Text.RegularExpressions.Match m = regex.Match(文字); //ひらがな判定 
System.Text.RegularExpressions.Match n = regex2.Match(文字); //漢字判定
System.Text.RegularExpressions.Match l = regex3.Match(文字); //カタカナ判定
//-------------------------------------------------------------
if (m.Success)
{
//最初の文字がひらがな だったら
textBox1.Text += "\r\n" + node.InnerText;
}
else if (n.Success)
{
//最初の文字が漢字 だったら
textBox1.Text += "\r\n" + node.InnerText;
}
else if (l.Success)
{
//最初の文字が漢字 だったら
textBox1.Text += "\r\n" + node.InnerText;
}
else
{
textBox1.Text += "," + node.InnerText;
}
//-------------------------------------------------------------
// 一文字目で


という感じにした。
すごく面倒だった(´・ω・)ス

ざっくりしたデータは囁く(´・ω・)ス

結局、Xpath後に正規表現でスクレイピングも完了で、あとはMySQL流しこむだけだお!と・・
そう思ってデータを取得したら電話番号がない・・・とか、
余計なアドレスとかEメールとか、
なんだかな・・・。
いったいどういうデータ構造なんだ。
またチマチマ直さないとイケナイ事になったり。

ちなみに構造と聞くと脳内で、村下孝蔵の初恋が澄み切った声と共にループ。

こんちきしょーという午後の記録。

スクレイピングは虫の息

やっと・・・できた模様。
まったく普段からC#触らないからこうなるズラ。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HtmlAgilityPack;
using System.Net;

namespace Html_Agility_Pack_テスト
{
public partial class Form1 : Form
{
string url = "http://itp.ne.jp/dir_result/?";
int g = 1; //カテゴリ
int p = 1; // ページ数
int areapage = 0;
int catnum = 0;
//= new int10203;
//TODO num=50 忘れないように。

//外部ファイル エリア.txtの読み込み
string[] area = File.ReadAllLines("エリア.txt",
System.Text.Encoding.GetEncoding("Shift_JIS"));
//外部ファイル カテゴリ.txtの読み込み
string[] cat = File.ReadAllLines("カテゴリ.txt",
System.Text.Encoding.GetEncoding("Shift_JIS"));
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
//area[]はマックス125
//
}

private void button1_Click(object sender, EventArgs e)
{
timer1.Interval = 9000;
timer1.Start();

}

private void timer1_Tick(object sender, EventArgs e)
{
try
{
label1.Text = area[areapage];
label4.Text = p.ToString();
label6.Text = cat[catnum];
//Webサイトに接続してHTMLを取得
string url = "某アドレス/?gr=" + cat[catnum] + "&pg=" + p + "&ad=" + area[areapage] + "&num=50";
WebClient web = new WebClient();
string html = web.DownloadString(url);

//HtmlDocumentクラスにHTMLをセット
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

//h2タイトルと住所電話抜き
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes(@"
/html[1]/body[1]/div[1]/div[2]/div[4]/div[1]/div[1]/div/div[1]/div[1]/h2[1]/a[1]|
/html[1]/body[1]/div/div/div/div/div/div/div/table/tr/td|
/html[1]/body[1]/div/div/div/div/div/div/div[1]/h2[1]/a[1]|
/html[1]/body[1]/div[1]/div[2]/div[4]/div[1]/div[1]/div/table/tr/td");

textBox1.Text += "■■■■■■■■■■■■■■■■■■■■■■■■■■■■" + "\r\n";
textBox1.Text += "エリア" + area[areapage] + "\r\n" + "カテゴリ" + g + "\r\n" + "ページ" + p + "\r\n";
textBox1.Text += "■■■■■■■■■■■■■■■■■■■■■■■■■■■■" + "\r\n";
textBox1.Text += "↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓" + "\r\n";
foreach (HtmlNode node in nodes)
{

textBox1.Text += node.InnerText + ",\r\n";


}
p++;
}
catch
{
if ( areapage == 125)
{
areapage = 0;
catnum++;
}
else
{
areapage++;
p = 1;
}
}
}

private void button2_Click(object sender, EventArgs e)
{
timer1.Stop();
}
}
}


あとカテゴリのエンドは決めておけばおk。
一応テストしておくか。

ここで、URLとメールが含まれてたりするので、
ここは、正規表現で消す事に。

さらに午後は進む(´・ω・)ス

適度にC#作業(´・ω・)ス

どうもXPathを使ってコレクションを抽出が長くなり・・・
@”文字列で改行とか。
ん~やってないとまったく。

下記メモ( ; ̄ω ̄)ゞ

//Webサイトに接続してHTMLを取得
string url = "アドレスとパラメーター(´・ω・)ス";
WebClient web = new WebClient();
string html = web.DownloadString(url);

//HtmlDocumentクラスにHTMLをセット
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);


//目的のコレクション
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes(@"
/html[1]/body[1]/div[1]/div[2]/div[4]/div[1]/div[1]/div/div[1]/div[1]/h2[1]/a[1]|
/html[1]/body[1]/div/div/div/div/div/div/div/table/tr/td|
/html[1]/body[1]/div/div/div/div/div/div/div[1]/h2[1]/a[1]|
/html[1]/body[1]/div[1]/div[2]/div[4]/div[1]/div[1]/div/table/tr/td");


次は外部ファイルから変数にいれてグイグイ回すと・・・・
完全読み込みの判定どうしようかと。

もう11:35とは・・・・

あっという間に11:35。
どうも作業が遅れ気味。
ちと予定を再確認しつつ・・・、
それにしても今日はいい天気。

こんな日は昼間散歩して浮世離れして、
夜にシコタマ作業にしたいけど・・そうは問屋が卸さない。
卸してもらえないってのは困るので、
しっかりと作業。

さて・・・燃え上がれ俺の心のC#

朝(´・ω・)ス

今日は午後に片付けと出撃以外は作業。
がっちり作業。

まずはコーヒー。

そんな朝