あれ
ブログのシステムをdenoに移行してみる。node modulesがなくせるらしいので。
Windowsにdenoをインストールした
denoでpostgresql serverに接続できん
import pg from 'npm:pg';
して、deno run --allow-net --allow-read
で実行したら行けたわ
new JSDOM('<html></html>');
で以下のエラーになってしまう
error: Uncaught Error: Not implemented: isContext
import { DOMParser, Element } from "https://deno.land/x/deno_dom/deno-dom-wasm.ts";
で行けたわ
const doc = new DOMParser().parseFromString(
`<a href="https://example.com">link</a>`,
"text/html",
);
console.log(doc.querySelector("a").href);
console.log(doc.querySelector("a").textContent);
undefined
link
え~~~~~~~~~~~~~
const doc = new DOMParser().parseFromString(
`<a href="https://example.com">link</a>`,
"text/html",
);
console.log(doc.querySelector("a").href);
console.log(doc.querySelector("a").getAttribute("href"));
console.log(doc.querySelector("a").textContent);
undefined
https://example.com
link
解決したけどやや不本意
ガチャガチャ触ってたらnode.jsで動かしてたクローラーがdenoで動くようになりました🎉
サーバーの方でもクローラーがdenoで動くようになりました🎉
node.jsを動かすpm2っていうのがあるんだけど、pm2を使ってdenoも動かすことができた
ecosystem.config.cjs(dlt_crawler.jsをPM2を通してdenoで動かす)
module.exports = {
apps: [
{
name: "dlt_crawler",
script: "./dlt_crawler.js",
interpreter: "deno",
interpreterArgs: "run --allow-net --allow-read --allow-env",
},
],
};
2022年12月3日日記
丸一日、iSH ShellにDenoをインストールするためのビルドに費やした。結果的にうまくいかなかった。そのうちリベンジしたい。
一旦、iPadでウェブアプリ開発するのは諦めかも。
AWS Cloud9も試したが、あまり使い心地が良くなかった。『iPadだけでCloud9開発環境を構築してみた話』に詳しい辛みが載っている。
『t_wの輪郭』をNode.jsからDenoに乗せ換える作業を始めた。手始めに、dlt_crawler.jsをDenoで動くようにした。
サーバーサイドでdenoをどうやって動かすかだがPM2でDenoを使えるらしいので、そのようにした。
あれ
User-Agentを一般のコンピュータに偽装してクロールする輩が来て気になったのだが、私が動かしてるデライトをクロールするクローラ(dlt_crawler.js)のUser-Agentは何になってるんだろう。Node.jsでgotを使っているので、gotになっているはず……?
Node.jsでgotを使った際のUser-Agentはgot (https://github.com/sindresorhus/got)
となっていた。実際にサーバにgotを通してアクセスし、アクセスログを確認した
gotのレポジトリでuser-agentと検索してみると、headersという引数でUser-Agentを設定できそうだ。
headers: {
'user-agent': undefined
}
とりあえず、dlt_crawler.js by t_w(https://towasys.com/)
としておこう。こちらUser-Agentが反映されていることをサーバにアクセスして確認済みだ。
コードは以下のようになった。
response = await got(url, {
headers: {
'user-agent': 'dlt_crawler.js by t_w(https://towasys.com/)'
}
});
というかrobot.txtをガン無視しているのでお行儀が悪い気がしてきた。さらっと調べたらデライトにrobot.txtは設定されていないっぽい……?じゃあいいか……いいのか?