Anglesharpというライブラリの話。

2021.03.13

Logging

久しぶりに技術的なお話の記事を書きます。AnglesharpというのはC#などでスクレイピングするときにスクレイピングを補助してくれるライブラリで結構人気のあるライブラリなるようです。スクレイピングするコードは下記のようになります。この書き方が至ってシンプルで書きやすいのではないかなと思っています。

http://anglesharp.github.io/

var Url = $"https://zip358.com/";
var querySelector = $"#index_post_list > li.clearfix.num1.type1 > div > h3";
var document = BrowsingContext.New(Configuration.Default.WithDefaultLoader()).OpenAsync(Url).Result;
var element = document.QuerySelector(querySelector);
Console.WriteLine($"blogtitle is {element.InnerHtml}");

このライブラリはとても良いのですが、一つ問題があります。スクレイピングするのですが・・・これjavascriptがOFFの状態でスクレイピングされるのですね。どうもこのコードではJSがONにはならないようですね。因みに自分はそのことを知っていなかったのでどハマリしました。大手の検索サイトなどはjavascriptがOFFの状態でも閲覧できるようになっている事を知りました、試しにブラウザをOFFの状態にしてみるとソースコードがかなり違っていてJSのONの状態とは情報が差異がある事が理解できると思います。

Anglesharpのコンフィグ設定(init)でエージェントなどを設定してあげると上手くJSがONの状態をスクレイピングすることが可能なのかもしれません。動画を見る限りではまだかもしれません・・・。

AngleSharp NET Headless Browsing

タグ

, , 358, anglesharp, BrowsingContext, clearfix, com, Configuration, default, div, document, element, gt, https, index, li, LIST, new, num, OpenAsync, POST, QueryS, querySelector, quot, result, type, url, var, WithDefaultLoader, zip, お話, コード, シンプル, スク, とき, ピング, ライブラリ, レイ, 下記, 久しぶり, 人気, 書き方, 補助, 記事, ,

Yahoo japanサイトのコロナ情報リンク集です。好評に付きVer2。

2020.12.21

Logging

Yahoo japanサイトのコロナ情報リンク集です。好評に付きバージョン2を
作成しました。見た目はこんな感じです。県名をクリックするとYahoo!japanのコロナサイトの
画面が開きます(遷移します)。ほんとは、Yahoo!データをウェブスクレイピングしようと思ったのですが、別にそこまでする必要はないかなと思いとどまり、いまに至っています。
データは国もJSONで公開していますのでわざわざ作ることもないのですけど、自分が見やすいように、時間があれば改善していきます。

追記:時間があったので改善しました。

https://zip358.com/tool/COVID-19-japan/

var ken_json = {};
fetch("./assets/js/ken47.json").then(response => response.json()).then((data)=>{
	let ken = [];
	for (const key in data) {
		ken.push("<a href='#' onClick='c19(\"" + "https://hazard.yahoo.co.jp/article/covid19" + data[key].roman +"\")' onmouseover='c19_f(\"" + data[key].roman.toUpperCase() + "\",\"red\")'' onmouseout='c19_f(\"" + data[key].roman.toUpperCase() + "\",\"#fff\")'>" + data[key].name + "</a>");
	}
	document.getElementById("covid19-link-list").innerHTML = ken.join(",");
	for (const key in data) {
		document.getElementById(data[key].roman.toUpperCase()).setAttribute("fill","#fff");
	}
});

function c19(url){
	window.open(url,"_blank");
}
function c19_f(kenid,color){
	document.getElementById(kenid).setAttribute("fill",color);
}	
{
	"1": {
		"name": "北海道",
		"roman": "hokkaido"
	},
	"2": {
		"name": "青森",
		"roman": "aomori"
	},
	"3": {
		"name": "岩手",
		"roman": "iwate"
	},
	"4": {
		"name": "宮城",
		"roman": "miyagi"
	},
	"5": {
		"name": "秋田",
		"roman": "akita"
	},
	"6": {
		"name": "山形",
		"roman": "yamagata"
	},
	"7": {
		"name": "福島",
		"roman": "fukushima"
	},
	"8": {
		"name": "茨城",
		"roman": "ibaraki"
	},
	"9": {
		"name": "栃木",
		"roman": "tochigi"
	},
	"10": {
		"name": "群馬",
		"roman": "gunma"
	},
	"11": {
		"name": "埼玉",
		"roman": "saitama"
	},
	"12": {
		"name": "千葉",
		"roman": "chiba"
	},
	"13": {
		"name": "東京",
		"roman": "tokyo"
	},
	"14": {
		"name": "神奈川",
		"roman": "kanagawa"
	},
	"15": {
		"name": "新潟",
		"roman": "niigata"
	},
	"16": {
		"name": "富山",
		"roman": "toyama"
	},
	"17": {
		"name": "石川",
		"roman": "ishikawa"
	},
	"18": {
		"name": "福井",
		"roman": "fukui"
	},
	"19": {
		"name": "山梨",
		"roman": "yamanashi"
	},
	"20": {
		"name": "長野",
		"roman": "nagano"
	},
	"21": {
		"name": "岐阜",
		"roman": "gifu"
	},
	"22": {
		"name": "静岡",
		"roman": "shizuoka"
	},
	"23": {
		"name": "愛知",
		"roman": "aichi"
	},
	"24": {
		"name": "三重",
		"roman": "mie"
	},
	"25": {
		"name": "滋賀",
		"roman": "shiga"
	},
	"26": {
		"name": "京都",
		"roman": "kyoto"
	},
	"27": {
		"name": "大阪",
		"roman": "osaka"
	},
	"28": {
		"name": "兵庫",
		"roman": "hyogo"
	},
	"29": {
		"name": "奈良",
		"roman": "nara"
	},
	"30": {
		"name": "和歌山",
		"roman": "wakayama"
	},
	"31": {
		"name": "鳥取",
		"roman": "tottori"
	},
	"32": {
		"name": "島根",
		"roman": "shimane"
	},
	"33": {
		"name": "岡山",
		"roman": "okayama"
	},
	"34": {
		"name": "広島",
		"roman": "hiroshima"
	},
	"35": {
		"name": "山口",
		"roman": "yamaguchi"
	},
	"36": {
		"name": "徳島",
		"roman": "tokushima"
	},
	"37": {
		"name": "香川",
		"roman": "kagawa"
	},
	"38": {
		"name": "愛媛",
		"roman": "ehime"
	},
	"39": {
		"name": "高知",
		"roman": "kochi"
	},
	"40": {
		"name": "福岡",
		"roman": "fukuoka"
	},
	"41": {
		"name": "佐賀",
		"roman": "saga"
	},
	"42": {
		"name": "長崎",
		"roman": "nagasaki"
	},
	"43": {
		"name": "熊本",
		"roman": "kumamoto"
	},
	"44": {
		"name": "大分",
		"roman": "oita"
	},
	"45": {
		"name": "宮崎",
		"roman": "miyazaki"
	},
	"46": {
		"name": "鹿児島",
		"roman": "kagoshima"
	},
	"47": {
		"name": "沖縄",
		"roman": "okinawa"
	}
}

タグ

19, 2, 358, 47, assets, com, covid, fetch, gt, https, JAPAN, JS, json, ken, quot, response, then, tool, var, ver, www, Yahoo, zip, ウェブ, クリック, こと, コロナ, サイト, スク, そこ, データ, バージョン, ピング, ほんと, リンク集, レイ, わざわざ, 作成, 公開, , 好評, 必要, 情報, 感じ, 改善, 時間, 画面, 県名, 自分, 見た目, 追記, 遷移,

半年過ぎましたね、フリーランサーという無職w。

2020.06.23

Logging

無職になり半年過ぎましたね。基本的に勤めていたときと生活習慣は変わらず規則正しい生活のままです。まぁそろそろ働かないといけないなという焦りも出てきましたが、どうなるかは分からないです。就活はしています?。

ハローワークの高知県賃金など

さてハローワークへ求人出している企業さんには悪いのですが、ハローワークサイトから高知県に求人を出している会社の求人データを全て引っこ抜いてきました(スクレイピング)。そして最低賃金とか最高賃金とかを調べてみました。結果、正社員求人は2000社ほどあり、その中で比較的、賃金の良いのは建築・土木と薬剤師でした。日給で一番低いのは断続的な仕事で505円、そして恐らく高知県の最低賃金790円が続きます。これを見ていると高知県は土木関係が多いですね、これは昔の名残だと思います、今では台風銀座ではなくなりましたが昔は毎年のように台風が通る県だったので、それに伴う災害が頻繁に発生する県だったこともあり、建築・土木関係のお仕事が比較的に多いですね。

次に多い仕事は介護職の仕事です、高知県は日本で一番ぐらいに高齢者が多い県ではないだろうか?あとよさこい祭りがあるので美容関係のしごとも実は比較的に多いです。自分が勤めていたIT関係の仕事は他の県比べて求人数が少ないですね。これから増えていって欲しいですが、、、サポートセンターばかりが増えていっているのが現状です。6000件超のデータを見て思ったことは高知県、頑張れ・・・!!と思いたくなります。『いや違うだろ、お前が頑張れ・・・』とツッコまれそうですが、そこは・・・忘れてください?。

ちなみにハローワークを検索するアプリを使用すると同じような結果が得られるかもしれませんが、このデータを取って三ヶ月ごとに比較してみようかと思います。時間があればジャンルごとにグラフとか作って視覚化するのも面白いかもしれません。今回、スクレイピングするのにC#とsqliteを使ってます。コードの公開はありませんが、高知県の現状を伝えていきたいと思います。

次回の求人レポートの記事予定は9月23日です。

タグ

2000, 505, 790, , お仕事, こと, これ, サイト, スク, それ, データ, とき, ハローワーク, ピング, フリーランサー, まま, レイ, , , 仕事, 企業, 会社, 全て, 半年, 台風, 名残, 土木, 就活, 建築, 日給, , 最低賃金, 最高, 正社員, 毎年, 求人, 災害, 無職, 焦り, 生活, 発生, , 結果, 習慣, 薬剤, 賃金, 銀座, 関係, 頻繁, 高知県,

pip3がうまく動かない(´・ω・`)v

2020.04.30

Logging

pipがうまく動かないときの対応。下記の3点が入っていないとpython3をインストールしたとしてもpipが動かないそうだ。これが分かるまでに2時間を費やした時間を返してください(´・ω・`)v

yum install -y openssl-devel
yum install -y libffi-devel
yum install -y zlib-devel
https://www.youtube.com/watch?v=mVAQTrLLJzw

ちなみにPython3のインストールは下記のURLの説明を参考しました。ソースコードをビルドしインストールしている。こうすることでバージョンの使い分けができる。PHPは慣れたもので簡単に使い分けできるですけどね・・・。PythonはPythonは・・・。

https://www.youtube.com/watch?v=nmTJ2DgYuEw

最後にソースコードをビルドしてインストールしてpipを使用する場合、pip3で動かない場合はpip3.8とか試してみてくださいね。

コピペでWEBスクレイピングしてみた動画をUPしています。ちなみにpython 初心者vlogをアップして駄目駄目さ見せつけています。PHPはスイスイ?と出来るのですがPythonはズブの素人です。

徐々に上達するでしょう。

タグ

-y, 2, , 3.8, install, libffi-devel, openssl-devel, php, pip, Python, UP, url, , web, yum, zlib-devel, インストール, コード, こと, コピペ, これ, してい, スク, ソース, とき, バージョン, ビルド, ピング, もの, レイ, 下記, 使用, 動画, 参考, 場合, 対応, 時間, 最後, 簡単, 説明,

現実を正確に理解すること。レイ・ダリオ

2020.04.17

Logging

現実を正確に理解すること、これが出来るか出来ないかで大きく変わると思います。見えていない人、気づきがわからないひとも少なからずいると思います。それを気づかせてくれる人がいないのは、かなり不幸です。

受け継がれる成功の「原則」|| レイ・ダリオ

自分は去年の冬に仕事を辞めています、仕事と将来を天秤にかけて辞めました。自分の誤算は新型コロナという事だけです、それ以外は何も誤算は有りません。金銭的にどうなっていくのかも考えた上で仕事を辞めています。人生一度きりです。自分がこうだと思ったことは今まで判断ミスは無いです。

無職で転職も繰り返しているので再就職も難しいでしょう、けれどもこの歳で辞めないで、ずるずる仕事を務めていて老いてから倒産なんて事になったら、それは不幸な出来事かと思います。最悪のケースを考えているひととそうではない人がいます。自分は最悪のケースを考えて行動しています。リスク取らない、いま無職であり空白の期間が続いていることはあまりリスクとは思っていません。それは今の現状が有るからです。この現状を打破することを念頭に置き日々過ごすことが、自分と同じような境遇にある方は大事かと思います。

この機会に技術力を磨くことも良いし、新たな技術や資格を身につけることも良いかと思います。いろいろな選択肢を考え客観的にこの先を考えることが大切です。先が見えないから、いまの現状を直視し考えることが大事になると自分に言い聞かせています(慌てるな冷静に考えよと)。

タグ

いま, かなり, ケース, こと, これ, コロナ, そう, それ, ダリオ, ひと, ひとと, ミス, リスク, レイ, 一度, , 不幸, , , 人生, 仕事, , 倒産, , 出来事, 判断, 去年, 天秤, 将来, 就職, 新型, 最悪, 期間, 正確, , 無職, 現実, 理解, 空白, 自分, 行動, 誤算, 転職,

AMP (Accelerated Mobile Pages)HTMLしなさいと勧められる。

2017.07.12

Logging

AMP (Accelerated Mobile Pages)HTMLしなさいと勧められるので
WordPressのAMPを導入しました。
さて、「AMPってなんでですかー?」って事だけど
簡単に言えばグーグルが進めているモバイル(スマホ)の表示速度を
改善させるあらたなHTMLなどの記述を指すみたい。
ちなみにアクセルレイテッド モバイル ページと読むそうですよ。
アクセルレイテッドとは加速を意味するものだとか、、。
ほぼHTMLとCSSだけしか許さないので
当たり前のごとく表示速度は速いですが、javascriptの記述に
制限があるので、殆どのWordPressのプラグインjsは動かないと
言っても良いです。
※ちなみにAMPに広告を表示させたい場合などは
プラグインを若干、編集しないといけない場合があります、
また、そのままJSをコピペで貼っても表示されないので
AMP用の記述などが必要になりますが、恐らくAMPじわじわ浸透していく
だろうなぁと感じます。最終的にJSなどがサーバサイドで動かすように
なるじゃないのかなぁと思っています(今はクライアント側で動いているけど)。

Intro to AMP (Accelerated Mobile Pages)

タグ

Accelerated, amp, css, html, javascript, JS, mobile, Pages, WordPress, アクセル, カー, グーグル, コピペ, じわ, スマホ, テッド, プラグイン, ページ, もの, モバイル, レイ, , 制限, 加速, 場合, 導入, 広告, 当たり前, 必要, 意味, 改善, 殆ど, , 簡単, 編集, 若干, 表示, 記述, 速度,