サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Switch 2
orangain.hatenablog.com
言語実装パターン ―コンパイラ技術によるテキスト処理から言語実装まで 作者: Terence Parr,中田育男,伊藤真浩出版社/メーカー: オライリージャパン発売日: 2011/12/24メディア: 大型本購入: 5人 クリック: 333回この商品を含むブログ (13件) を見る 「言語実装」と聞くとコンパイラの本かと思いますが、本書は「言語アプリケーション」を実装するための本です。言語アプリケーションには設定ファイルの読み取り、データの読み取り、コード生成、コード変換器、インタプリタなど、入力ファイルを処理・解析したり、変換したりするアプリケーションが含まれます。 このようなアプリケーションはだいたい同じような構成になり、以下のような要素を組み合わせて実装することになりますが、各要素の実装パターンが数種類紹介されていて、メリット・デメリットを考慮して適切なものを選択できるようになってい
はじめに Cloud Runはサーバーレスなコンテナ実行基盤です。この記事ではフルマネージド版のCloud Runのみを対象とし、フルマネージド版のCloud Runを指して、単にCloud Runと表記します。 Cloud Runの料金プランの特徴として、リクエストの実行中のみ課金対象になるという点が挙げられます。しかし、リクエストのたびにコンテナの起動と終了を繰り返すわけではなく、起動したコンテナはある程度使い回されます。リクエストが無い間は、コンテナが起動していても課金されないというわけです。 課金対象の時間 (https://cloud.google.com/run/pricing?hl=ja より引用) だからと言って無料で使い放題というわけではなく、コンテナランタイムの契約として、リクエスト中しかCPUが使えないと明記されています You should only expect
2020-07-11: Cloud Buildでの記述が誤っていたので修正しました。 はじめに 今年のゴールデンウィークは暇があり、勤務先で複数のリポジトリを使っているのが辛く感じてきていたため、monorepoについて調べてみました。monorepoについての説明やメリットについては他の記事に譲ります。 www.graat.co.jp この参考記事でmonorepoの本当の課題として挙げられている以下の4点のうち、3点目に相当する「CIで変更によって影響を受けた部分だけをビルドする方法」を調査・検討しました。 トランクベース開発は、より一段と重要になります すべてのサービスがモノレポで上手く動くわけではありません より精巧なCIセットアップが必要です あなたは大規模な変更について考える必要があります この参考記事ではnxが挙げられていますが、nxは主にJavaScriptのプロジェクトを
KotlinでWebアプリケーションを作るにあたり、SQLを直接記述できるタイプのO/Rマッパー(本稿ではSQLマッパーと呼びます)を探し求めました。 SQLマッパーに求める機能 SQLマッパーに求める機能はBindとMapです。この記事ではBindとMapを次のように定義します。 Bind SQLに埋め込んだプレースホルダー(名前付きが望ましい)に対応するパラメーター群を渡す機能。 例: SELECT ... WHERE price BETWEEN :minPrice AND :maxPrice のようなSQLに、minPriceとmaxPriceプロパティを持つオブジェクトを渡す。 Map 実行結果として得られた行をオブジェクトにマッピングする機能。 例: SELECT id, name, price FROM ... のようなSQLの実行結果を、id, name, price のプロ
Pythonクローリング&スクレイピングはおかげさまでご好評いただき、この度、増補改訂版を出版する運びとなりました。紙版は本日8/10発売で、電子書籍版は既に発売中です。 Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド 作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2019/08/10メディア: 単行本(ソフトカバー)この商品を含むブログを見る クローリングやスクレイピングを扱う書籍は、対象として利用しているWebサイトの変化によって、サンプルコードが動かなくなってしまう宿命があります。初版を執筆した際は、なるべく考え方を伝えるようにすることで、たとえサンプルが動かなくなったとしても役立つ内容にすることを心がけました。 ですが、書いてあるコードがそのまま動くに越したことはありません。今回改訂の機会をいただいたことで、読者の皆様に学
先月ツイートしましたが、Pythonクローリング&スクレイピングは第5刷となり、累計発行部数が1万部を突破しました。 【1万部突破!】Pythonクローリング&スクレイピングの増刷(第5刷)が決まり、発売1年足らずで累計発行部数が1万部を突破しました!読者の皆様、書評を書いてくださった皆様、レビュワーをはじめとする関係者の皆様に改めてお礼申し上げます。今後ともよろしくお願いします。 https://t.co/jrJxo9iCuC— かと (@orangain) 2017年11月10日 評価 1万部突破にあたって http://scraping-book.com/ を更新する際に、ブログでの書評をまとめたのですが、とても良い評価をいただけていて嬉しく思います。 Amazonのカスタマーレビューは13件も書いていただき、★4.3と高い水準が継続していて本当にありがたいです。 「Rubyによるク
これはWebスクレイピング Advent Calendar 2017の7日目の記事です。こんな感じでAWS FargateとAWS Lambdaを使ってサーバーレス(EC2レス)なクローラーを作ります。 この記事はFargateでのクローリング処理にフォーカスしており、クロールしたHTMLをS3に保存するところまでを主に解説します。Lambdaの方はおまけ程度の扱いで、スクレイピングしたデータの扱い(データベースへの格納など)はスコープ外です。 長くなったので目次です。 背景 AWS Fargateの登場 クローラーの構成 やってみる 1. ScrapyのプロジェクトでSpiderを作る 2. Scrapy S3 Pipelineをインストールする 3. Scrapy S3 Pipelineをプロジェクトに追加する 4. ScrapyのプロジェクトをDockerizeする 5. Amazo
PythonユーザのためのJupyter[実践]入門を頂きました。ありがとうございます。そして出版おめでとうございます。 PythonユーザのためのJupyter[実践]入門 作者: 池内孝啓,片柳薫子,岩尾エマはるか,@driller出版社/メーカー: 技術評論社発売日: 2017/09/09メディア: 大型本この商品を含むブログを見る まず明らかにしておくと、私は日常的にデータ分析を行っているわけではなく、主にWebプログラミングのためにPythonを使っています。 PyData界隈でJupyter Notebookが広く使われていることは存じていますが、個人的には通常のインタラクティブシェルのほうが手に馴染むので好んで使っています。 このため、本書のメインターゲットではないような気がしますが、その視点からレビューします。 全体の構成 目次を見るとわかりますが、半分以上のページ(4章*
PythonでElementTreeやlxmlを使って名前空間つきのXMLから要素を取得しようとしても、思い通りに取得できないことがあります。これはよくあるハマりどころですが、あまりまとまった情報がないのでまとめておきます。 Python 3.6.0で検証しました。 目次: 解決したい問題 前提知識: XMLの名前空間 問題: 名前空間を含むXMLから意図した要素を取得できない 対応方法 ElementTree(標準ライブラリ)の場合 lxml(サードパーティライブラリ)の場合 XPathにデフォルト名前空間を指定したい 実はlxmlのfind()やfindall()ではデフォルト名前空間を指定できる 名前空間の宣言を消してしまう(雑) まとめ 参考 解決したい問題 まず前提としてXMLの名前空間について確認した後、解決したい問題について述べます。 前提知識: XMLの名前空間 1つのXM
だいぶ日が経ってしまいましたが、神戸Pythonの会でクローリング・スクレイピングについて2回話してきました。 1回目はRequestsとBeautiful Soupを使った基本的なスクレイピングについて、2回目はHeadless Chromeを使ったスクレイピングについて話してきました。 資料は概要的なもので、これだけ読んでもあまり役立たないですが、以下のリンク先にあります。 1回目: Crawling and Scraping in Python 2回目: Crawling and Scraping using Headless Browser 演習問題もやりました。こちらのほうがメインです。 github.com 感想など 神戸Pythonの会は去年から始まったコミュニティで、しばしば参加させてもらってます。登壇者との距離が近くて質問しやすく、演習問題などでコードを書く時間を多く取っ
最近3月のライオンを見て、子供の頃以来の将棋を始めるなどした。 最近は将棋も改めて勉強してる。直接のきっかけは3月のライオンを見たことだけど、大人になってからボードゲームをやると子供の頃とは違うように見えることに気づいたというのもある— かと (@orangain) 2017年3月7日 適当なアプリをダウンロードしてコンピューターと対戦すると、ちょっと悪い手を指すだけで付け込まれて負けてしまう。序盤の定跡というものの理解が足りていない。相手の指す手に合わせて最適な手を指し続けなければならないので、1つの戦法だけ知っていても意味がない。 図書館で将棋の本を借りてきたり、勉強のためのアプリを購入するなどしてみた。解説されている個別の戦法は理解できるものの、考えられるすべての指し手(ここでは指し手空間*1と呼ぶことにする)における、その戦法の位置づけが把握できない。もちろん指し手空間は膨大なのだ
多様なWebサイトからスクレイピングする際、Webサイトによっては文字化けが発生することがあります。 RequestsとBeautiful Soupを組み合わせる場合に、なるべく文字化けを減らす方法を解説します。 Beautiful Soupはパーサーを選択できますが、ここではhtml.parserに絞って解説します*1。 結論 以下の2点を守ると概ね幸せです。 Content-Typeヘッダーのエンコーディングを参照するコードは下の方に掲載しています。 1. Chardetをインストールしておく。 $ pip install chardet 2. RequestsのResponseオブジェクトをrとしたとき、BeautifulSoupのコンストラクターには(r.textではなく)r.contentを渡す。 import requests from bs4 import Beautiful
この記事はクローラー/Webスクレイピング Advent Calendar 2016 16日目の記事です。 JavaScriptが使われているWebページからスクレイピングする場合、PhantomJSなどのヘッドレスブラウザーを使うのが一般的です。 ただ、ちょっとしたJavaScriptを解釈できれば十分な場合、オーバーキルなこともあります。 この記事では、PhantomJSとかを使わずに簡単なJavaScriptを処理する方法を解説します。 どんな場合に役立つの? NHKニュースのWebサイトを題材として取り上げます。 http://www3.nhk.or.jp/news/html/20161215/k10010807361000.html NHK NEWS WEBのRSSではニュースのタイトルとURL、概要しか提供されていません。画像のURLやニュースの本文を取得したい場合は、スクレイ
Pythonクローリング&スクレイピングの電子書籍版も紙版と同じく12月16日発売となりました。 Gihyo Digital Publishing:PDF/EPUB(DRMフリー) Pythonクローリング&スクレイピング ―データ収集・解析のための実践開発ガイド― | Gihyo Digital Publishing … 技術評論社の電子書籍 Amazon:Kindle Amazon.co.jp: Pythonクローリング&スクレイピング ―データ収集・解析のための実践開発ガイド― 電子書籍: 加藤 耕太: Kindleストア 書籍の詳しい中身については以下の記事もご参照ください。 orangain.hatenablog.com
Pythonクローリング&スクレイピングでは、クローリング・スクレイピングやデータ解析のための様々なライブラリを紹介しています。 書籍でOSSのライブラリを紹介すると、そのライブラリに貢献する機会やインセンティブが生まれると考えています。 書籍で紹介すると貢献したくなる 書籍で解説するには、ドキュメントやソースコードを読んでライブラリの正確な挙動を知る必要があります。 ドキュメントが曖昧な場合、そうして得られた知識でドキュメント改善のための指摘や提案ができるようになります。 書籍で紹介するライブラリで変更の大きな新バージョンが公開される場合、Alpha版やBeta版、RC (Release Candidate) 版で検証して、書籍内のコードが正しく動くことを確認する必要があります。動かない場合は自分で直すなり、早めに直るよう報告するなりしたくなるでしょう。 ライブラリの挙動が不自然な場合、
「Pythonクローリング&スクレイピング」という書籍を執筆しました。執筆にあたって色々なツール・サービスのお世話になったので、記録を残しておきます。 大まかな流れは、以前の記事に書いたとおりです。ツールの選定は2015年1月頃(textlintとprhは2016年1月頃)に行ったので、現在では状況が変わっているものもあるかもしれません。ご了承ください。 目次 目次 Re:VIEW 採用理由 良いところ 振り返って 作ったものとか textlint 採用理由 良いところ 振り返って 作ったものとか prh 採用理由 良いところ 振り返って goemon 採用理由 良いところ 振り返って GitHub 採用理由 良いところ 振り返って CircleCI 採用理由 良いところ 振り返って まとめ Re:VIEW 原稿の形式は著者の自由とのことでしたので、Re:VIEWで書きました。 Re:VI
2016-12-23更新: 電子書籍書籍版の情報を更新しました。電子書籍版も好評発売中です! Pythonを使ってクローリング・スクレイピングを行い、データを収集・活用する方法を解説した書籍です。 Pythonの基本から、サードパーティライブラリを使ったスクレイピング、様々なサイトからのデータ収集・活用、フレームワークScrapyの使い方、クローラーの運用までを扱っています。 Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド- 作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2016/12/16メディア: 大型本この商品を含むブログ (3件) を見る クローリング・スクレイピングとPython Pythonは言語自体の書きやすさ、ライブラリが充実していること、データ解析との親和性が高いことなどから、クローリング・スクレイピングに向いている言語です。
2016-12-09追記 「Pythonクローリング&スクレイピング」という本を書きました!Scrapyについても1つの章を割いて解説しています。 Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド- 作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2016/12/16メディア: 大型本この商品を含むブログ (1件) を見る PythonのスクレイピングフレームワークであるScrapyの新バージョン1.1がついに公開され*1、Python 2.7に加えてPython 3.3以降がサポートされました🎉 。 Scrapy 1.1におけるPython 3のサポートは以下の制限があり、ベータサポートとされていますが、使えないのはどれもマイナーな機能なのでそれほど問題ないでしょう*2。 Windows上のPython 3ではテストされていない。 メールの送信
2015-12-20 19:14追記: readabilityの説明を追加・修正しました。 Webページをクロールした時に、ざっくりと本文 (ページ内の重要なコンテンツ) のみを抽出できると便利です。 Google検索すると、特に日本語だとExtractContent以外の情報があまり見つかりません。 ExtractContentは昔使ったことがあり、たしかに便利なのですが、公開が2007年と若干古いので今でも使えるのかという疑問がありました。また、Pythonで他の選択肢として使えるライブラリは、非日本語圏の方が作ったものと思われるので、日本語のページで問題なく使えるのか知りたかったので調べてみました。 比較するライブラリ 比較したのは以下の5つのライブラリです。 dragnet eatiht extractcontent goose readability パッケージ名 dragnet
これはクローラー/Webスクレイピング Advent Calendar 2015の9日目の記事です。 本記事では、Scrapinghub社*1が開発しているSplashというオープンソースソフトウェアを紹介します。 github.com JavaScriptを使ったページからスクレイピングする方法としては、PhantomJSとSelenium/CasperJSなどの組み合わせが一般的ですが、これらとは少し違う手段として使えるかもしれないソフトウェアです。 私自身Splashを最近知ったばかりで、軽く探した限りでは日本語の情報もないので、調査しつつSplashの使いドコロを探ってみたいと思います。 Splashとは READMEには以下のように書かれています。 Splash is a javascript rendering service with an HTTP API. It's a
Pythonの有名なWebスクレイピングフレームワークのScrapyがバージョン1.0になりました。*1 0.24からの主要な変更点は下記のとおりです。 SpiderでItemの代わりにdictを返せるようになった Spiderごとにsettingsを設定できるようになった Twistedのloggingの代わりにPythonのloggingを使うようになった CrawlerのコアAPIがリファクタリングされた いくつかのモジュール配置場所が変更された 他にも数多くの変更点がリリースノートに記載されています。 Scrapy 1.0の感想 大きな機能の追加よりも、APIの整理と安定性の向上がメインのようです。これまではバージョンを重ねるごとに便利になっていくものの、あまりAPIが安定していない印象でしたが、APIを安定させた区切りのリリースと言えるでしょう。1.0というメジャーバージョンに到
2015年6月2日修正:henrichさんのコメントを受け、Debianの記述を修正しました。 最近のLinuxディストリビューションにおいてPython 3がデフォルトになってきているという話をチラホラ聞くので、状況を調べてみました。 結論 PEP 394にディストリビューション向けのガイドラインが公開されている。 Arch Linuxは既にPython 3がデフォルトになっている。 /usr/bin/pythonがPython 3を指している。 pythonパッケージはPython 3を指している。 Fedora 23(2015-10-27リリース予定)でPython 3がデフォルトになる予定。 /usr/bin/pythonは削除されるかpython3にシンボリックリンクされるか議論されている。 Ubuntu 16.04(2016-04リリース予定)でPython 3がデフォルトにな
元MicrosoftのJoel氏が書いたエッセイ集です。 自分の中で感じていてもうまく言語化できなかったことが明確に言語化されていて素晴らしかったです。 Joel on Software 作者: Joel Spolsky,青木靖出版社/メーカー: オーム社発売日: 2005/12メディア: 単行本購入: 18人 クリック: 371回この商品を含むブログ (446件) を見る 特に印象的だったのは以下の2つの章です。 第12章 5つの世界 5つの世界とは以下の5つを指し、それぞれの世界でそれぞれの苦労があるという話です。 パッケージ インターナル 組み込み ゲーム 使い捨て インターナルソフトウェア(社内システム)とパッケージソフトウェア(オープンソース、Webベース、コンサルティングウェア)の違いが非常に頷けました。 実際、インターナルソフトウェアとパッケージソフトウェアの主要な違いの1つ
2016-01-16追記: 購入した当初は高いと思っていたサドルですが、座り方で多少改善されるようです。身長160cmの妻でも漕げています。 平日の家に帰ってご飯を食べてから寝るまでの時間はコードを書いていることが多いのですが、まったく運動しないことが気にかかっていました。 運動するためにジムに行くのは面倒だし、コードを書く時間を減らしたくはないので、運動しながらコードを書ける方法がないか考えていました。 そんなときに以下の記事を見て、運動しないとなぁと思っていると、「サイクリングデスク」という言葉が目に入りました。 「The Healthy Programmer」を読んで自宅を快適なプログラミング環境にする - 八発白中 オフィスでは1種類以上のイスを使うこと -- 普通のオフィスチェア、バランスボール、可動式のイス、さらに言えばサイクリングデスク サイクリングデスクってなんだ?と思って
Re:VIEW で執筆する原稿を継続的インテグレーションしたかったので、以下の図のような仕組みを作りました。 ローカル執筆環境の前提条件 Docker 1.3以降がインストールされている Re:VIEW形式の原稿のフォルダがある Re:VIEWやLaTeXはDockerイメージのものを使うので、インストール不要です。 私はMac OS X 10.9とBoot2docker 1.4.1で動かしましたが、WindowsやLinuxでも動くのではないかと思います。 Re:VIEWをDockerで動かす vvakameさんがDocker Hubにイメージを公開してくれていますので、これを使います。 https://registry.hub.docker.com/u/vvakame/review/ dockerコマンドさえ使える状態であれば、以下のようにしてサンプル書籍 をコンパイルしてbook.p
この記事はクローラー/スクレイピング Advent Calendar 2014の12日目の記事です。 ScrapyはPythonにおけるクローリング・スクレイピングのフレームワークとして有名ですが、Scrapydという興味深い機能があるので今日はこれを紹介します。 Scrapydはその名の通り、Scrapyのデーモンです。サーバーにおいてサービスとして動作し、Scrapyで作ったクローラーのジョブ管理ができます。 多くのページをクロールするクローラーにおいては、1回の実行時間が1日を超えることもしばしばあるので、ジョブ管理は重要です。このように運用を考慮した機能まで備えているのがScrapyの特徴的なところです。 Scrapydの概要 Scrapydは簡単なWebインターフェイスを提供しており、主にcurlを使ってAPIを呼び出します。 http://Scrapydをインストールしたホスト
2016-12-09追記 「Pythonクローリング&スクレイピング」という本を書きました! Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド- 作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2016/12/16メディア: 大型本この商品を含むブログを見る これはクローラー/スクレイピング Advent Calendar 2014の7日目の記事です。 Pythonでクローリング・スクレイピングするにあたって、いろいろなライブラリがあるので一覧でまとめてみます。 以下の4つのカテゴリにわけて紹介します。 Webページを取得する Webページからデータを抜き出す Webページの自動操作 総合的なフレームワーク なんでこれが載ってないの?この説明はおかしい!などありましたらお気軽にお知らせください。なお、この記事はいろいろなライブラリを紹介することを目
EC2などのサービスでは US East (Northern Virginia) というリージョンが存在しますが、S3だけは US East の代わりに、US Standard というリージョンが存在します。何故なのか気になるのでちょっと調べてみました。 AWS公式資料から US Standardへのリクエストは自動的に Northern Virginia または Pacific Northwest *1 にルーティングされるとのことです。 この認識が正しければ、S3で自動的に作られるオブジェクトの3つ以上の複製が、これら2つのリージョンにまたがって保管されていると考えられます。 This region automatically routes requests to facilities in Northern Virginia or the Pacific Northwest usin
予選の時間内では足りてないことばかりだったので、もう少し試行錯誤することにしました。 #isucon 2014の予選をほぼ一人で戦うハメになった話 - orangain flavor 目標は50000点、できれば60000点出したい。 予選終了時 Python実装 DBはRedisのみを使う Cookieがないときだけnginxで静的ファイルを返す Gunicornを使ったマルチプロセスモデル ワーカー数10、ワークロード10 最終提出スコア: 32710 細々とした改良 nginxの設定を追加。 redis-pyのパーサーをhiredisに置き換え。 テンプレートエンジンを使わないよう変更。 アプリを見なおして、RedisのRead/Write数を削減。 スコアはあまり上がらず 32912。 Gunicornのワーカーをmeinheldに置き換え 前回のエントリのコメントで id:met
次のページ
このページを最初にブックマークしてみませんか?
『orangain flavor』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く