クローラーするサービスの基礎。

2016.11.19

Logging

クローラーするサービスの基礎のソースを載せときます。殆どサイボウズ・ラボの人が書いたコードです。
このサンプルソースをそのまま貼り付けても一階層のリンクしか取得できません。
再帰処理の部分をコメントアウトしているからです。ちなみにコメントアウトを外してもメモリオーバーでおそらく
大体のサーバでエラーが出力されます。どうしたら良いのかといえば、DBに1階層目のリンクデータ、2階層目のリンクデータという様に保存する機能を施す。次にajaxで階層を受け渡しながら、再帰処理を行う。
再帰処理が終わる要素はそれ以上、下階層がないことを判断する。そのためには保存したデータを検索することが重要になる。=(イコール)
新規にデータを登録しているうちは、再帰処理を終わらせないようにすることが大事になる。
これの機能を加えることで巡回する事が可能になる。ここで注意しないといけないのが、外部リンクを保存しないことです。外部リンクまで保存していると巡回は永遠に終わらないでしょう・・・。
トイウコトデ
ほぼ??コピペソースを貼っときます。

<?php
echo json_encode($obj);
exit;
function get_linkarray($link)
{
	$context = stream_context_create(array("http" => array("method" => "GET", "header" => "User-Agent: simplecrawler.library.php 0.0.1")));
	$resultR = array();
	$resultS = simplecrawler($context, $link, $link, parse_url($link));
	foreach ($resultS as $k => $v) {
		$resultR[] = $v;
	}
	return $resultR;
}
function simplecrawler($context, $link, $burl, $base, $linkArrayDat = array())
{
	$linkArrayPre = crawler_link(crawler_page($link, $burl, $base, $context), $link, parse_url($link));
	foreach ($linkArrayPre as $k => $v) {
		if (!isset($linkArrayDat[$v])) {
			$linkArrayDat[$v] = $v;
			//$linkArrayDat = array_merge($linkArrayDat, simplecrawler($context, $v, $burl, $base, $linkArrayDat));
		}
	}
	return $linkArrayDat;
}
function crawler_page($link, $burl, $base, $context)
{
	if (strpos($link, $burl) === 0) {
		$page = @file_get_contents($link, false, $context);
		return $page === FALSE ? null : $page;
	} else {
		return null;
	}
}
function crawler_link($page, $burl, $base)
{
	$linkArray = array();
	if ($page === null) {
		return $linkArray;
	}
	preg_match_all("/[\s\n\t]+href\s?=\s?”(.*?)”/i", $page, $href);
	for ($i = 0; $i < count($href[1]); $i++) {
		$link = $href[1][$i];
		if (preg_match("/^http(s)*\:\/\//", $link)) {
			$result = $link;
		} elseif (preg_match("/^\/.+$/", $link)) {
			$result = $base["scheme"] . "://" . $base["host"] . $link;
		} else {
			// echo $base["path"] . “\n”;
			$b = preg_split("/\//", dirname($base["path"]));
			$t = preg_split("/\//", $link);
			foreach ($t as $v) {
				$l = $v === "." ? true : ($v === ".." ? array_pop($b) : array_push($b, $v));
			}
			$result = $base["scheme"] . "://" . $base["host"] . join("/", $b);
		}
		$linkArray[$result] = $result;
	}
	return $linkArray;
}

タグ

, 2, ajax, db, アウト, イコール, うち, エラー, オーバー, クローラー, コード, ここ, こと, コメント, これ, サーバ, サービス, サイボウズ, サンプル, ソース, それ, ため, データ, トイウ, メモリ, ラボ, リンク, , , , , 保存, 再帰, 処理, 出力, 判断, 取得, 可能, 基礎, 外部, 大事, 大体, 巡回, 新規, 検索, 機能, 殆ど, 永遠, 注意, 登録, 要素, 部分, 重要, 階層,

寝る時間を削っても。

2016.10.26

Logging

寝る時間を削っても勉強しないという事がわかりました。
今まで勉強していない人がいきなり勉強するようになるとか例外だなと
痛感しました。勉強したいのだけどやる気が出ない。
このやる気を起こさせる何か(原動力)があれば勉強するだと思う。
そういう事で勉強するメリットを考えてみる。
例えば英語、今まで勉強していない英語を勉強するメリットは?。
1.映画が字幕無しで観ることが出来る。
2.英語サイトがすらすら読むことが出来る。
3.海外旅行で何とかなりやすい。
4.プログラムの変数名がそれなりになる。
そう思うとそれなりにメリットはあるだけど、ただ、そのレベルまで
たどり着くには、一体どのぐらいの時間をかけないと駄目なんだろうかと
思うわけです。そう思うと勉強する気になれない人が多いだと言う事を
昔、本で読んだことがあります。
勉強をしようとする人は、例えばめちゃくちゃな英語でも
使ってみよう会話してみようと考えるわけです。
要するに最初から完璧を目指さない出来る範囲で試行錯誤して
トライ・アンド・エラーを繰り返し勉強するだそうです。
そうすることによっていつの間にか英語が身についてるという
事らしいです。
※ちなみに自分の英語力は中学生一年生以下、たぶん小学生並みです。
下手すると小学生低学年並みなのかも。

タグ

, 2, , 4, こと, サイト, それなり, プログラム, めちゃくちゃ, メリット, やる気, レベル, , , 会話, , 例外, 勉強, 原動力, 変数, 字幕, , 映画, 時間, 最初, , , 海外旅行, 痛感, 英語, 駄目,

…のように感じる、…のような手触りがする、…をしたい気がする、を欲しい気がする

2016.10.10

Logging

[Alexandros] – Feel like (MV)

『…のように感じる、…のような手触りがする、…をしたい気がする、を欲しい気がする。』という意味をfeel likeは持っています。
月曜日なのに今日はお休みです。これがアップされている頃は県外にいると思います。
県外に行った話はそのうちアップします。秋になり「彼女を欲しい気がする。」この頃ですね。
三連休も終わり明日から仕事だという方も多いはず。という事で短文で失礼します。

タグ

, 2, , com, cZ, feel, https, like, qA, Sjq, watch, www, youtube, アップ, うち, お休み, これ, パス, 三連, , 今日, 仕事, , 失礼, 彼女, 意味, 手触り, , 明日, 月曜日, , 県外, 短文, , , ,

高知県津野町の天狗高原へ行ってきた( ゚д゚ )。

2016.08.22

Logging


高知県津野町の天狗高原へ行ってきた( ゚д゚ )。お一人様で。
津野町の天狗高原に行ってきたのですが
道中の道が狭い・・・・。
(愛媛県側から行けばそうでもないらしいです。)
肝心のカルストも観てきましたよ。それよりも山の景色が壮大な感じです。
もっと晴れていたらもっと良い感じがしましたが、あいにくの曇り空で
帰る頃には雨が降ってくる始末で・・・・。
やはり山の天気は変わりやすいのだと実感しました。
肝心のカルストの景色は取れていません。
カルストの岩ゴツゴツは見ましたが、高原は見ていないのです。
なので、写真がない。
山々の景色をパシャパシャ取ってきたので載せときます。
ちなみにカップルが5割、団体が1割、家族連れが3割、お一人様は1割と
言う比率になっています。