Anglesharpというライブラリの話。
2021.03.13
久しぶりに技術的なお話の記事を書きます。AnglesharpというのはC#などでスクレイピングするときにスクレイピングを補助してくれるライブラリで結構人気のあるライブラリなるようです。スクレイピングするコードは下記のようになります。この書き方が至ってシンプルで書きやすいのではないかなと思っています。
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の状態をスクレイピングすることが可能なのかもしれません。動画を見る限りではまだかもしれません・・・。
タグ
1, 3, 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
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
無職になり半年過ぎましたね。基本的に勤めていたときと生活習慣は変わらず規則正しい生活のままです。まぁそろそろ働かないといけないなという焦りも出てきましたが、どうなるかは分からないです。就活はしています?。
さてハローワークへ求人出している企業さんには悪いのですが、ハローワークサイトから高知県に求人を出している会社の求人データを全て引っこ抜いてきました(スクレイピング)。そして最低賃金とか最高賃金とかを調べてみました。結果、正社員求人は2000社ほどあり、その中で比較的、賃金の良いのは建築・土木と薬剤師でした。日給で一番低いのは断続的な仕事で505円、そして恐らく高知県の最低賃金790円が続きます。これを見ていると高知県は土木関係が多いですね、これは昔の名残だと思います、今では台風銀座ではなくなりましたが昔は毎年のように台風が通る県だったので、それに伴う災害が頻繁に発生する県だったこともあり、建築・土木関係のお仕事が比較的に多いですね。
次に多い仕事は介護職の仕事です、高知県は日本で一番ぐらいに高齢者が多い県ではないだろうか?あとよさこい祭りがあるので美容関係のしごとも実は比較的に多いです。自分が勤めていたIT関係の仕事は他の県比べて求人数が少ないですね。これから増えていって欲しいですが、、、サポートセンターばかりが増えていっているのが現状です。6000件超のデータを見て思ったことは高知県、頑張れ・・・!!と思いたくなります。『いや違うだろ、お前が頑張れ・・・』とツッコまれそうですが、そこは・・・忘れてください?。
ちなみにハローワークを検索するアプリを使用すると同じような結果が得られるかもしれませんが、このデータを取って三ヶ月ごとに比較してみようかと思います。時間があればジャンルごとにグラフとか作って視覚化するのも面白いかもしれません。今回、スクレイピングするのにC#とsqliteを使ってます。コードの公開はありませんが、高知県の現状を伝えていきたいと思います。
次回の求人レポートの記事予定は9月23日です。
タグ
2000, 505, 790, w, お仕事, こと, これ, サイト, スク, それ, データ, とき, ハローワーク, ピング, フリーランサー, まま, レイ, 中, 今, 仕事, 企業, 会社, 全て, 半年, 台風, 名残, 土木, 就活, 建築, 日給, 昔, 最低賃金, 最高, 正社員, 毎年, 求人, 災害, 無職, 焦り, 生活, 発生, 県, 結果, 習慣, 薬剤, 賃金, 銀座, 関係, 頻繁, 高知県,
pip3がうまく動かない(´・ω・`)v
2020.04.30
pipがうまく動かないときの対応。下記の3点が入っていないとpython3をインストールしたとしてもpipが動かないそうだ。これが分かるまでに2時間を費やした時間を返してください(´・ω・`)v
yum install -y openssl-devel
yum install -y libffi-devel
yum install -y zlib-devel
ちなみにPython3のインストールは下記のURLの説明を参考しました。ソースコードをビルドしインストールしている。こうすることでバージョンの使い分けができる。PHPは慣れたもので簡単に使い分けできるですけどね・・・。PythonはPythonは・・・。
最後にソースコードをビルドしてインストールしてpipを使用する場合、pip3で動かない場合はpip3.8とか試してみてくださいね。
コピペでWEBスクレイピングしてみた動画をUPしています。ちなみにpython 初心者vlogをアップして駄目駄目さ見せつけています。PHPはスイスイ?と出来るのですがPythonはズブの素人です。
徐々に上達するでしょう。
タグ
-y, 2, 3, 3.8, install, libffi-devel, openssl-devel, php, pip, Python, UP, url, v, web, yum, zlib-devel, インストール, コード, こと, コピペ, これ, してい, スク, ソース, とき, バージョン, ビルド, ピング, もの, レイ, 下記, 使用, 動画, 参考, 場合, 対応, 時間, 最後, 簡単, 説明,