楽天銀行と会計freee連携スクリプト

先日、会計freeeから、以下のような無慈悲なアナウンスがありました。 2月24日(木)以降は、楽天銀行のインターネットバンキングから口座明細データのCSVファイルをダウンロードしfreee会計にアップロードする対応を行っていただく必要があります。 いや、手作業を減らしたくて会計freeeにしたのに、それはないですよfreeeさん、って感じです。 目の前には、以下の三つの選択肢があります。 freeeをやめる 楽天銀行をやめる 手作業を受け入れる どれも選びたくありません。。 よくよく考えると自分はエンジニアなので、第四の選択肢として「スクレイピングして明細を自動で取り込む」ことができそうですので、やってみることにしました。 作るもの Node.jsで、puppeteer を利用して、楽天銀行の個人ビジネス口座の利用明細CSVをダウンロードして、会計freeeの口座情報に明細アップロードす Continue Reading

Posted On :

pyppeteerでファイルをダウンロード

昨日、puppeteerでファイルをダウンロードする という記事を書いたのですが、puppeteerのpythonに移植した pyppeteer で同じようにファイルダウンロードをやってみました。 pyppeteer自体の使い方は以前記事を書いてるので、そちらをご覧ください。 pyppeteerの使い方 実装 puppeteerで試した中で一番筋が良さそうだった「ダウンロードのrequestをキャプチャして、同じ内容で別途requestを送信する」という方法を実装してみました。 from typing import Union, List, Dict import asyncio from uuid import uuid4 from mimetypes import guess_extension from pyppeteer.launcher import launch from py Continue Reading

Posted On :
Category:

puppeteerでファイルをダウンロード

この記事は Node.js Advent Calendar 2020 の2日目の記事です。 puppeteer でファイルダウンロードする方法はこちらの issue がまだopenなことからも分かるように、すんなり実現できる公式の方法はなさそうです。 とはいっても、スクレイピングをしてて、ファイルダウンロードしたいケースはあるわけで、実際に試してみようと思います。 前準備 とりあえず、puppeteerをインストールします。puppeteer以外に必要なライブラリは、個別に追記しています。 npm install puppeteer –save 実行方法 サンプルソースを適当な名前のファイル(たとえばsample.js)にコピペしてnodeコマンドで実行するだけで、実際に動かすことができます。 node sample.js ファイルをダウンロードする 方法1【△】: 単純にブラウザのファ Continue Reading

Posted On :
Category:

ローカルPCでWEBサーバを立ち上げ静的ファイルをSERVEする4つの方法

最近スクレイピングをすることが多いのですが、開発時に動作確認のために条件に合うWEBサイトを探し出すのが大変なので、ローカルPC上でWEBサーバを立ち上げて静的ファイルをSERVEしたくなることが多いです。 ローカルPCで簡単に静的WEBサーバを立ち上げる方法を4つほど紹介しようと思います。 VS Code の Live Server(おすすめ) 自分は知らなかったのですが、VS Codeの拡張機能でLive Serverというものがあります。静的および動的ページのライブリロード機能を備えたローカル開発サーバーを起動してくれる拡張機能です。こちらに特徴が列挙してあります。 インストール VS CodeのExtensionsからLive Serverを検索してインストールします 使い方 一番お手軽な方法は、対象のファイルを右クリックして、Open with Live Serverする方法です Continue Reading

Posted On :
Category:

pythonのGeneratorとAsyncGeneratorの使い方

pythonの generator について、yieldはもともとたまに使ってたのですが sendやreturnもできること 非同期処理でも使えること を知ったので、軽く記事を書いておこうと思います。 ジェネレータ(Generator) ジェネレータ関数は、値を返す代わりにジェネレータ(一連の値を返す特殊なイテレータ)を返す関数で、yieldキーワードを含む関数はジェネレータ関数です。 ジェネレータ関数の中でyieldが呼び出されると、一旦ジェネレータ関数は一時停止して呼び出しの処理が実行されます。次にジェネレータの__next__()が呼び出される(for文やnext(gen)など)と、ジェネレータ関数の処理が再開されます。 Listを返して処理できるケースであれば、ジェネレータ関数にする必要はないと思いますが、 値をyield(生成)した時の状態で何か処理をしたい場合(Listにすると Continue Reading

Posted On :

pythonでスクレイピングする際に利用するライブラリ比較

Pythonでスクレイピングを実装する機会があったので、その中で利用した(もしくは技術検証した)ライブラリについて、特徴やどういう時に利用するかについて個人的な見解を書いていこうと思います。 requests 指定したURLに対してリクエストを投げて、レスポンスを取得することができるシンプルなライブラリです。 JavaScript実行を必要としないような静的なサイトからResponseを取得する目的であればこれで十分です。 特徴 HTTPレスポンス(ヘッダー、ステータスコード、HTML)を取得できる リクエストヘッダーやクッキーを指定してリクエストすることができる リダイレクト(301や302など)もしてくれる urllib3.util.retry.Retryと一緒に使えばリトライもできる response.textで本文を取得する際、charsetをよしなに解釈してdecodeして文字列 Continue Reading

Posted On :
Category:

Scrapyの使い方

Scrapy は、Webサイトをクロールし、ページから構造化データを抽出するために使用されるWebスクレイピングフレームワークです。Scrapyに関してはわかりやすい記事がたくさんあるので、ここでは実装サンプルを紹介しまくるスタンスにしようと思います。 インストール pip install scrapy # or poetry add scrapy チュートリアルを試す こちらにしたがって、チュートリアルを試してみます。 scrapy startproject tutorial or poetry run scrapy startproject tutorial を実行するとtutorialフォルダができてその下にテンプレートのソースコード一式が出力されます。 tutorial/spidersフォルダの下に以下の内容でquotes_spider.pyを作ります。 import scrapy Continue Reading

Posted On :

pyppeteerの使い方

pyppeteerは、npmモジュールであるpuppeteerをpythonに移植したものです。 例えば、以下のようなことができます。 ヘッドレスブラウザ(chromium)を開く 実際にブラウザ内でページを読み込む CSSセレクタでHTMLエレメントを取得する HTMLエレメントをクリックし、画面遷移する JavaScriptも実行されるので動的に描画された後のHTMLを取得する Cookieも共有されるので、Cookieやセッションが必要なサイトのスクレイピングもできる インストール pip install pyppeteer # or poetry add pyppeteer シンプルな使い方 こちらのサイトにログインするサンプルを書いてみました。 import asyncio from pyppeteer.launcher import launch from pyppeteer. Continue Reading

Posted On :