Python

Scrapyのアーキテクチャ

Scrapyは、Python製のスクレイピング用フレームワークです。 Scrapyのアーキテクチャ・設計を見ることで、Scrapyの内部で何が起きているのか、その全貌をざっくり理解しましょう。

Scrapyことはじめ

Scrapyは、Python製のスクレイピング用フレームワークです。 Scrapyのごく簡単なチュートリアルを紹介しつつ、Scrapyを使用するメリットについて、考察します。 BeautifulSoupや、Seleniumだけでは足りない処理とは。。

Sphinxでドキュメント作成 - github.ioでの公開まで

Sphinx とは Python製のドキュメント生成ツール。 特徴としては以下の通り。 reStructuredTextで記述する(プラグインの導入によりMarkdownも可) ドキュメントを複数ファイルに分けて管理することができる 実体はプレーンテキストなのでGit等でバージョン管…

NCBI EntrezからFastaファイルをダウンロード

NCBI Entrez は、30以上もの生物学的な目的で作成されたデータベースに対する統合的なテキストベースの検索、情報抽出システムです。 BiopythonパッケージのBio.Entrezモジュールを使えば、このシステムをpythonから手軽に使えちゃいます。 ちなみに、Bio.En…

綺麗なコードを書いて下さい。

と言われた。 そうか。これは綺麗なコードじゃないのか。 いいだろう従おう。 ほしい関数 リストを受け取り、偶数個ずつリストで返すジェネレータ関数。 以下みたいな挙動を示すreturn_even_listを実装したい。 list1 = [1, 2, 3, 4, 5, 6] for i in return_…

【Python】アンダースコア( _ )の使い方(特殊属性、dunders)

アンダースコアなのかアンダーバーなのか そんなことはどっちでも良い。 問題はpythonでアンダースコア(アンダーバー)がよく登場することだ。 お品書き。 1つのアンダースコアから始まる属性名(_var) 2つのアンダースコアから始まる属性名(__var) 1つ…

とりあえず.gitconfigをいじっとけという話。

Pythonプロフェッショナルプログラミング 第3版作者:株式会社ビープラウド秀和システムAmazon これすんごい良いです。 まだChapter 06までしか読んでないんですけども。 すんごいよさそうです。 プロフェッショナルプログラミングだからプロプロって呼ぶんか…

__pycache__、 .pyc の役割

__pycache__ というディレクトリがそろそろ気になってきた。 なんか気づいたらできてる。 なんなんだこれは。 以下で議論されていた。 python - What is __pycache__? - Stack Overflow 要点をまとめると。 ファイルをインポートした際にできる python compi…

Matplotlib subplot の仕方

グラフを並べて表示したいとき、 2つの方法がある。ほかにもあるかもだけど2つの方法を知っている。 matplotlib.pyplot.subplotsを使う fig, axes = plt.subplots(figsize=(10, 10), nrows=2, ncols=4, subplot_kw={'adjustable': 'box-forced'}) axes には …

Selenium備忘録

今友達からbed365 というサイのスクレイピングを任されている。ブックメーカーで有名なサイトだ。ここのデータを集めて解析したいらしい。 スクレイピングでは基本ChromeDriverを使って行っているのだが、久しぶりに動かしたら、以下のようなエラーが度々表…

IPython データサイエンスクックブック memo (1)

1.1 Introduction %%writefile IPython magicコマンド。テキストファイルの作製。 インラインの数式は$...$ を使って記述。 独立した数式は $$...$$ を使って記述。 HTML() 、SVG() 、YouTubeVideo() nbviewerを使ってIPythonで生成したJSONテキストを公開可…

repr()、str()、eval() のお話

Biopython Tutorial and Cookbookの和訳を行ってる最中。 >>> from Bio import SeqIO >>> for seq_record in SeqIO.parse("ls_orchid.gbk", "genbank"): ... print(repr(seq_record.seq)) Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CG…

nCr をpython で書くと。。

つまりn個からr個取り出す組み合わせというやつ。 これをPythonで書きたい。 そんなときは高階関数reduceを使う。 import operator as op def ncr(n,r): r = min(n-r,r) if r == 0: return 1 num_over = reduce(op.mul, xrange(n, n - r, -1)) num_under = r…

MkDocs 使ってみた。

昨日任された業務を紹介しよう。 Web上でパワポの内容をWebページで見れるようにして! というものだ。 こんなとき、MkDocsがとても便利。 MkDocsの公式に飛ぶ。 サイト自体がMkDocsで作られてる。 こんなページがMarkdownでお手軽に作れるのがMkDocs。 いち…

Webスクレイピングで、、

インターンの方でWebスクレイピングが必要になったので、お勉強。 shop.oreilly.com このHTML中の <tr class="gift" id="gift1"><td> <tr class="gift" id="gift2"><td> <tr class="gift" id="gift3"><td> <tr class="gift" id="gift4"><td> <tr class="gift" id="gift5"><td> をとってきたいんだけど、 from urllib.request import urlopen from bs4 import BeautifulSou…</td></tr></td></tr></td></tr></td></tr></td></tr>

ちょっと便利シリーズ

unicodedata モジュールが便利そう。 unicodedata.name(chr[, default]) 文字 chr に付いている名前を、文字列で返します。名前が定義されていない場合には default が返されますが、この引数が与えられていなければ ValueError を発生させます。 unicodedat…

or のメモ

最近checkiOというものにハマっておりまして。 いや嘘だ、最近始めてハマりだしてまして。 様々な問題に対して海外の色んな人が書いたコードを見ることができるんですが、そこでちょっとした新しい発見をしたのでメモ。 問題は、典型的なFizzBuzzテスト。 つ…