タグ

ブックマーク / ymotongpoo.hatenablog.com (57)

  • gevent+pyqueryで並列にスクレイピングする - YAMAGUCHI::weblog

    はじめに こんにちは、Python界の炭酸x2倍のジョルトコーラです。なんか適当に書いたコードが予想外にはてブ付いたので「みんな好きモノなんだなー」と思いました。同期なコードだとURL増えたときに詰まっちゃうので、非同期なやつもちょろっと紹介しますよ。 あ、くれぐれも闇雲なスクレイピングはしないでくださいよ。DoS攻撃と変わらないですから。捕まっても僕は責任とりませんよ。 リンク 5分でWebスクレイピングをする - YAMAGUCHI::weblog 前回のエントリ。これは直列なコードなのでURLが増えれば増えるほど線形に遅くなる。 やってみよう おさらい 前回は指定した複数のURLのページにあるHTMLからaタグを全部抜き出す、というようなことをしたのでした。で、今回はそれを非同期化しましょうという話。 非同期にしたいところ 前のコードでforとかになってるところは基的に同期じゃなく

    gevent+pyqueryで並列にスクレイピングする - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2011/01/09
  • 5分でWebスクレイピングをする - YAMAGUCHI::weblog

    はじめに あけましておめでとうございます。今年もPython界の江古田ちゃんとして頑張っていく所存です。さて id:nishiohirokazu が5分でPythonは便利だと思える記事を元旦から書いていました。 「ほえー、さすが西尾さんや」って思ってたら、西尾さんが「おい山口、5分でPython便利だなーって思える記事書けや」っていう無言の圧力をかけてきたので*1 *2なんとなく書きました。 「5分で」っていうのが読者が読む時間なのか、筆者が書く時間なのかがわからなかったので前者ということにしました。5分で記事とコード両方書くとか無理や。 こんなことないですか 「Webでスクレイピングしたいよー、てへへ。だけど文字コードとかがページごとにバラバラでマジしんどいっす。しかもタグ抜き出すのとかめちゃめんどいっす><」ってことはあったりしませんか? リンクのタイトルとかも綺麗に抜き出したいなー

    5分でWebスクレイピングをする - YAMAGUCHI::weblog
  • urllib, urllib2を使ってGET/POST - YAMAGUCHI::weblog

    注意(追記:2013.03.22) もうこの情報は古いので、いまはHTTP系の処理はrequestsを使ったほうがいいです。 Requests: HTTP for Humans — Requests 1.1.0 documentation 動機 Web API使ってるとでてくる使い回しをメモ。 方法 まずはオーソドックスに GET import urllib url = 'http://d.hatena.ne.jp/ymotongpoo' params = urllib.urlencode({'hoge':1, 'fuga':2}) f = urllib.urlopen(url + '?' + params) # paramsはhoge=1&fuga=2の形になっている print f.read() POST import urllib url = 'http://d.hatena.ne.

    urllib, urllib2を使ってGET/POST - YAMAGUCHI::weblog
  • 君は北の最新OS "Red Star 2.0"を見たか - YAMAGUCHI::weblog

    はじめに いくつかの記事を見て朝鮮民主主義人民共和国の国産LinuxであるRed Star 2.0を使ってみなければならない衝動に駆られインストールしてみた。 参考 北朝鮮が独自の国産OS「Red Star」を開発、技術的には「10年遅れ」 - GIGAZINE RedStar Install North Korea’s “secret cyber-weapon”: brand new Red Star OS — RT 北朝鮮の独自OS「Red Star」:一般システムエンジニアの刻苦勉励:ITmedia オルタナティブ・ブログ Red Starのライセンスに関してはここの意見を採用した 作業ログ KVMインスタンスの作成 Red StarのISOは2個あって、そのうちDPRK Red Star [ashen_rus].ISOの方がインストーラ。設定等に用いるため、ISOファイルを適当にリ

    君は北の最新OS "Red Star 2.0"を見たか - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2010/09/13
  • 10分で始めるKVM - YAMAGUCHI::weblog

    はじめに 新人研修で新人の方々の中で技術方面やりたい人のサポートしています。今までネットサーフィンとメールとOffice使うくらいしかしてなかった、という人も多数いるのでそういう方々に早く技術を身につけてもらいたいなと思って家に環境構築をすることをお勧めしました。 どうせならいろんな環境を作ってほしいなと思い、仮想化環境を使って環境を構築する方法をメモっておきます。VMwareやVirtualBoxを使えば簡単なんでしょうけど、せっかくなら新しめの技術に触れてほしいということで、ここに触れておきます。自分も別に詳しいわけではないので突っ込み歓迎。会社の後輩向けに書いていますのでその辺も汲み取ってください。 KVMってなんですか? 詳しい人はたくさんいるのでここでは詳細は省きます。KVMはKernel-based Virtual Machineの略でLinuxカーネル自体をハイパーバイザー化

    10分で始めるKVM - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2010/08/07
  • virutualenvとvirtualenvwrapperとpipを使う - YAMAGUCHI::weblog

    はじめに なにかテスト環境を作ったり、開発を行うときにパッケージをインストールしなければいけないけど、環境を汚したくないなっていうときにvirtualenvが便利だ、という話は前から聞いてたんですが必要に駆られるとときがなかったので使ってませんでした。 しかしようやくそういうときがやってきたので早速入れてみたんですがこれは便利すぎる! 参考 virtualenv, virtualenvwrapper, pip を使う方法 - Ian Lewis virtualenvwrapper のフックスクリプト - SPEAKER BREAKA pip って何(・ω・ ) - Djangoへの片思い日記 Google先生に聞いてみたら上位が全員PySpaな人でした。ちゃんちゃん。どうもありがとうございますー。 virtualenvとvirutalenvwrapperの設定 $ sudo easy_in

    virutualenvとvirtualenvwrapperとpipを使う - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2010/03/12
  • Ustreamの可能性に挑戦している今日この頃 - YAMAGUCHI::weblog

    はじめに なんとなく家で飲んでて、勢いでUstreamで放映し始めたら意外な反響があって、結局1週間やってしまいました。しかし、ただ放送するだけでもつまらないのでいろいろと試してみています。 さぐりさぐり始める ymotongpoo's talk #1, something ymotongpoo on USTREAM. Radio ymotongpoo's talk #2, 2/28/10 08:33AM PST ymotongpoo on USTREAM. Radio ymotongpoo's talk #3, 2010/03/01 ymotongpoo on USTREAM. Radio 一番最初は特になにをするわけでもなく、だらだらとしゃべり始めたわけだけど、やっぱり回数を重ねて行くとだんだんこちら側も慣れてくる。とはいえ、やっぱり一人喋りを延々とつづけるというのは限界があるわけです

    Ustreamの可能性に挑戦している今日この頃 - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2010/03/11
  • ML115購入&改良 - YAMAGUCHI::weblog

    ML115買った HP ML115 G5 帰ってきた! スタートダッシュ3 4577670-AKOZ - NTT-X Store NTT-X StoreでML115が激安だったので勢いで買ってしまった。社会人怖い。検証環境用にマシンがほしかったので渡りに船ということで。送料無料だったので12800円でした。ただスペック的にCPUがシングルコアだったり、RAMが1GBだったり、HDDが160GBだったりするので、届き次第パーツを変更しなければいけません。 ML115届いた サイトには「到着日のご指定はできません」とあったけれど、ダメ元で「2/6の午前中到着希望です」と書いたらちゃんとその時間に届けてくれた。偶然かもしれないけれどよかった!ありがとうございました。 パーツ検討 このwikiを見ながら検討しました。 HP-ProLiant-ML115 G5まとめwiki - トップページ CPU

    ML115購入&改良 - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2010/02/13
  • Linuxから自宅のエアコンを操作できるようにしたかった - YAMAGUCHI::weblog

    はじめに たまにエアコンのリモコンがどこに行ったかわからなくなったりするので、PCからエアコン操作できたらいいな、と思って作ろうとした。結局断念したんだけどね。 使ったもの ハードウェア BUFFALO PCastTV2対応 PC用学習リモコンキット PC-OP-RS1 出版社/メーカー: バッファロー発売日: 2006/09/10メディア: Personal Computers購入: 17人 クリック: 807回この商品を含むブログ (10件) を見る 渋谷で買おうと思ったんですが、ビックカメラでは「渋谷、新宿、池袋ともに在庫なし」、ヤマダ電機では「取り扱っていない」と言われました。取り寄せしてもらうくらいならAmazonで、ということでAmazonで購入。 ソフトウェア シリアル通信に関してはpySerialを使います。それ以外はPythonの標準ライブラリです。 あとシリアルドライバ

    Linuxから自宅のエアコンを操作できるようにしたかった - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2009/12/24
  • TwitterのOAuthを使って90日以上発言してない人をremoveするスクリプト書いた - YAMAGUCHI::weblog

    はじめに 最近「フォロワー1000人目指そう」とか #followmejp とかつながりたがる流れが多いけど、TwitterのTLがあふれちゃうとやる気なくしちゃうことが前にわかったので縮小の方向に進めてます、こんにちは。 また最近はOAuth推奨っぽいのでOAuthでfollowingを管理するスクリプトを書きました。 参考 Twitter API を OAuth で認証するスクリプトを 0 から書いてみた - trial and error ほぼここのパクリ。あざーっす。 Pythonでの、Pitの使い方 世界一わかりやすいムービー付き - When it’s ready. (a2c.get.diary) スクリプトをそのままcommitできるようにpit使い始めました。id:a2cさんありがとうございまっす! Twitter Developers 当然TwitterAPIは読むでし

    TwitterのOAuthを使って90日以上発言してない人をremoveするスクリプト書いた - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2009/11/30
  • YAMAGUCHI::weblog

    はじめに こんにちは、Google Cloudのオブザーバビリティ/SRE担当者です。出張中で発売日にきちんとした記事が書けなかったのですが、去る2月24日に私が翻訳しました『効率的なGo―データ指向によるGoアプリケーションの性能最適化』という書籍がオライリー・ジャパン社より出版されました。書店ならびに各社オンラインストアでご購入いただけます。 www.oreilly.co.jp 効率的なGo ―データ指向によるGoアプリケーションの性能最適化 作者:Bartłomiej Płotkaオーム社Amazon 電子書籍版はオライリー・ジャパンのサイトにPDFおよびEPUBでの提供がありますので、そちらよりご確認ください。 『効率的なGo』をなぜ翻訳しようと思ったのか 私は業務において、SREやオブザーバビリティに関わる各種プラクティスの啓蒙や、それらの各種製品(Google Cloudのプロ

    YAMAGUCHI::weblog
    yuiseki
    yuiseki 2009/11/28
  • minidomを使ってXML解析を行う - YAMAGUCHI::weblog

    動機 PythonはXML関係のパーサが標準ライブラリに複数用意されてます。2.5.2で使えるものだと、Expat, SAX2, DOMなんかがあります。 その中でminidomを使っていたときにはまったのでメモ。 サンプル こんなXMLがあったとして、entryを要素を得たいとします。 <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>hoge</title> <updated>2008-11-28T08:15:02Z</updated> <author> <name>ymotongpoo</name> <uri>http://d.hatena.ne.jp/ymotongpoo</uri> </author> <entry> <link rel="alterna

    minidomを使ってXML解析を行う - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2009/09/11
  • switch-case文に関する考察 - YAMAGUCHI::weblog

    いまPythonでshellスクリプトを書いてちょっと勉強をしています。shellコマンドはシンプルなので作るにはいい題材だし、挙動それ自体はいい勉強になるんですよね。で、shellコマンドのオプションを処理するときに、Cとかではgetopt()とか使ったりしますが、ちょこっと作るときにはswitchなんか使ってみたりするわけです。 404 - エラー: 404 で、話はPython。いま作っているスクリプトでもオプションは受け付けたいです。しかしPythonにはswitch文がないです。じゃあどうやってそれを実現するかといったら、2つ方法があるわけで。 if-elif-elseで対応する 辞書型で対応する 前者の場合は自明です。case文を一つ一つif(elif, else)ブロックに対応させてあげればいいという話。しかしそれはスマートじゃありません。そこで辞書型を使います。 Pytho

    switch-case文に関する考察 - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2009/08/03
  • WSSE認証を利用したAtom APIとか - YAMAGUCHI::weblog

    動機 いろんなWeb APIを触ってみようと思った。 できた物 WSSE.py (ファイル前半) WSSE認証 このへんを見ながらちょこちょこと作り始めました。 はてなフォトライフAtomAPIとは - はてなキーワード So-net blog:AtomAPI仕様 送信プロトコル WSSE認証をする場合はまずサービスのエンドポイントに特定のHTTPリクエストを送る必要があります。PythonでHTTPリクエストを送る場合にはhttplibのHTTPConnectionメソッドを使います。 HTTPリクエストのHTTPヘッダにはX-WSSEプロパティにbase64にエンコードした各ユーザ名、パスワードなどを送信する必要があります。 リクエスト GET /_atom/blog HTTP/1.1 X-WSSE: UsernameToken Username="user_name", Passwo

    WSSE認証を利用したAtom APIとか - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2009/06/19
  • mixi APIで遊んでみた - YAMAGUCHI::weblog

    動機 Macにはmixiフォトアップローダが無かったり、mixi stationの調子が悪かったりして頭に来たので、スクリプトで同様のアプリケーションを作ってみようと思った。 できた物 WSSE.py (ファイル後半) 使い方 一通りの使い方はこんな感じ。 mc = MixiClient('username','password') tracks = mc.getTracks() # 足あとの取得(10件) notify = mc.getNotify() # お知らせの取得 friends = mc.getFriends() # マイミク一覧の取得 update = mc.getUpdates() # 更新情報一覧の取得 albumurl = mc.createAlbum(u'旅行', u'旅行の写真') # 新規フォトアルバムの作成 mc.postPicsToAlbum(['photo1

    mixi APIで遊んでみた - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2009/05/25
    python
  • Django Hackathon Disc.8 に参加してきた - YAMAGUCHI::weblog

    感想 Django Hack-a-thon Disc.8 | Djangoと日の仲間たち いままでPythonで遊んでて、知ってはいたけど使ってなかったDjangoを使い始めるよいきっかけとなりました。特にハンズオンではどの入門書でも触れるような箇所は余り触れずにむしろ入門書後に躓くような部分をわりと多く教えてもらったのでかなり有意義でした。次回以降、Python温泉とかにも参加したいですね。 Django Hands-on 基的なところ manage.pyを使うとき $ python manage.py help # 使い方 $ python manage.py syncdb # DBとModelのsync $ python manage.py shell # シェルモード $ python manage.py runserver # テストサーバ起動 $ python manage

    Django Hackathon Disc.8 に参加してきた - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2009/05/18
  • 諸々ディストリビューションのバージョンを確認する - YAMAGUCHI::weblog

    動機 修論に計算機環境を書かなければならなくなったため,ついでに諸々のOSでバージョン情報を調べる方法を調べてみたくなった. 方法 Cygwin cygcheckコマンドで入っているパッケージとかの情報を見ることができます. # cygcheck -c Cygwin Package Information Package Version Status _update-info-dir 00575-1 OK alternatives 1.3.29a-1 OK ash 20040127-3 OK atk 1.10.3-1 OK (略) ubuntu lsb_releaseというコマンドを使うみたい. # lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 6.06.1 L

    諸々ディストリビューションのバージョンを確認する - YAMAGUCHI::weblog
    yuiseki
    yuiseki 2008/02/18