Webのフロントエンドをテストする時に利用するSeleniumを利用することが多いと思います。Seleniumは現時点でJava、C#、Ruby、Python、Javascript (NodeJS)とほぼ、主要な言語はカバーしています。今回はその中の一つ、Pythonで利用できるSeleniumBaseを紹介します。 利用ブラウザについて 執筆(2016年7月25日現在)時点でSeleniumBaseはFirefoxのドライバが同梱されていますが、最新のFirefox 47.0ではエラーで強制終了してしまいます。 本記事ではChromeの利用を前提としています。 事前準備 SeleniumBaseを利用するにはPython、pip、git が必要となります。以下のサイトが用意されていますので、はじめてPythonやpipを利用するという時は参考にしてみて下さい。 SeleniumBase/
ブラウザテストツールの代表格と言えば「Selenium」ですが、実は、6年前にも一度調査したことがあったのです。しかしながらその当時は結局、業務で採用されることはありませんでした。 現在の「Selenium2」は、「WebDriver」というツールが統合されるなど、当時の「Selenium1」から大きく進化をしているわけですが、それでもツールの利用方法などは6年前からあまり変わっていないようです。 Selenium導入にあたって最初につまずくのは、やり方が何通りかあって「結局どれがいいの?」と迷ってしまうことかな?と思います。使い方としては大きく3通りあると思うのですが、それを簡単にまとめたのが↓の表です。(「○○向け」というのは個人的な印象です。) 概要 テストの書き方 実行ブラウザ Selenium IDE Selenium-RC Selenium WebDriver 初心者向け GU
Python の print はデフォルトで末尾に改行を追加して出力します。 これを末尾に改行を加えずに出力する方法をご紹介します。 Python 3 の場合 Python 2 の場合 Python 3 の場合 Python 3 の print は Python 2 とは違い print() 関数です。 print() 関数はデフォルトで末尾に改行を追加しますが、引数 end を使うと末尾に出力する文字を変更することができます。 end に空文字 "" を渡せば改行が追加されません。 print("hello", end="") print("hello", end="") # => hellohello
Pythonのライブラリ(Beautiful Soup)を利用してスクレイピングしてみた インストールとタグ操作root@hostname:/home/shimizu/python# aptitude install python-bs4 以下の新規パッケージがインストールされます: python-bs4 python-chardet{a} python-lxml{a} ... root@hostname:/home/shimizu/python# cat scraping-bs4.py # coding: UTF-8 import urllib2 from bs4 import BeautifulSoup res = urllib2.urlopen("http://ll.jus.or.jp/2014/program.html") # オブジェクト<class 'bs4.element.R
Pythonでスクレイピングというネタはすでに世の中にもQiitaにもたくさん溢れていますが、なんとなくpyqueryが使いやすいという情報が多い気がします。個人的にはBeautiful Soupの良さも知ってもらいたいと思うのでここではBeautiful Soupを使っていきたいと思います。 ちなみにこのエントリーはほとんどの部分がBeautiful Soup4のドキュメントの要約です。もっと詳しい情報が知りたい場合はドキュメントをご覧ください。 英語 http://www.crummy.com/software/BeautifulSoup/bs4/doc/ 日本語 http://kondou.com/BS4/ よくある勘違い pyqueryはjQueryのようにcssセレクタを使ってHTMLを扱うことができる点がBeautiful Soupよりも使い易いという意見がありますが、それBe
2016-12-09追記 「Pythonクローリング&スクレイピング」という本を書きました! Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド- 作者: 加藤耕太出版社/メーカー: 技術評論社発売日: 2016/12/16メディア: 大型本この商品を含むブログを見る これはクローラー/スクレイピング Advent Calendar 2014の7日目の記事です。 Pythonでクローリング・スクレイピングするにあたって、いろいろなライブラリがあるので一覧でまとめてみます。 以下の4つのカテゴリにわけて紹介します。 Webページを取得する Webページからデータを抜き出す Webページの自動操作 総合的なフレームワーク なんでこれが載ってないの?この説明はおかしい!などありましたらお気軽にお知らせください。なお、この記事はいろいろなライブラリを紹介することを目
HOWTO Fetch Internet Resources Using The urllib Package¶ Author: Michael Foord Introduction¶ urllib.request is a Python module for fetching URLs (Uniform Resource Locators). It offers a very simple interface, in the form of the urlopen function. This is capable of fetching URLs using a variety of different protocols. It also offers a slightly more complex interface for handling common situations -
2. 問題意識 • 自社製品に対する口コミを収集して分析したい・・・ • ブログ記事を集めて市場の動きを予測できないか? • 私、オープンデータに興味あるんです! • でもまずは女の子の水着画像集めたい※。 • というかもう本能の赴くままに集めたい※※。 目的はともあれウェブブラウジングを自動化したいときはある。 ※http://d.hatena.ne.jp/utgym/20121212/1355277764 ※※http://yusukebe.com/archives/20120229/072808.html 4. HTML を取ってくる # coding: utf8 # このコードは utf8 というエンコードで書かれています import urllib2 # ウェブから情報を取るためのライブラリ urllib2 を読み込みます url = 'http://www.li
Python(lxml)でhtmlを処理する まとめ Pythonにはxml/htmlを取り扱うためのlxmlという便利なサードパーティモジュールがあります。 ここでは、lxmlを使ってhtmlを処理する際に、使えるメソッドなどを簡単にまとめています。 (例がHTML5を使ったものなので気をつけてください。) 初歩的なものを細かくまとめたものは、 「lxmlでhtmlを処理する」にあります。 また、 lxml にある全てのメソッドを紹介しているわけではありませんのでご注意を。 1. htmlの読み込み >>> dom = lxml.html.fromstring(html) >>> dom <Element html at 1967ed8> >>> dom2 = lxml.html.parse('python_tips_003.html') >>> dom2 <lxml.etree._El
lxmlでhtmlを処理する Pythonでhtmlを取り扱う際は、「htmllib(標準モジュール)」や 「Beautiful Soup」 といったモジュールがあります。 しかし、高速で柔軟な操作がしたい場合は、 「lxml」がいいということなので、 今回はlxmlでhtmlを操作する方法をメモしたいと思います。 lxmlは、Beautiful Soupより高速で、htmllibより柔軟なhtml(xml)操作を可能にするのですが、 日本語資料が少ないと言うのが難点でした。最低限のことならば、ちょっと英語を読めば、 何とかなりますが、ちょっと凝ったことをしようと思うと英語力がネックでつまづいてしまいました…。 そこで、今回は、自分がつまづいた所を中心に紹介したいと思います。 目次 htmlから情報を抽出する htmlソースを改変する まとめと補足 1. htmlから情報を抽出する htm
Pythonにおける無名関数(匿名関数)の書き方について説明します。無名関数は、一度だけしか使われない使い捨ての関数のことです。一度きり使うだけなので、名前をつける必要がないため無名関数と呼ばれます。Pythonではlambda式を使って無名関数を作ることができます。 lambda式を使った無名関数の作り方 通常、関数は処理のまとまりに名前をつけて部品化したもので、名前をてがかりにプログラム中のどこからでも呼び出すことができます。しかし、プログラムの途中でその場限りで使い捨てる場合は名前を付ける必要がありません。このような関数を無名関数と呼び、最近の言語ではlambda式を使って記述することが多くなっています。 次の例は2つの引数を足し算した結果を返す関数add()を定義したプログラムです。
Python で文字列を別の文字列で置換したいときは replace あるいは re.sub を使います。 replace は単純な文字列置換を行います。正規表現を利用したより複雑な置換を行うためには標準ライブラリの re モジュールにある re.sub を使用します。 replace を使用して文字列を置換する replace の記述方法は以下の通りです。
Pythonの文字列置換は、置換の仕方やバージョンによって利用すべきモジュールが異なっており、少しわかりにくいので、Python 2.xでのstrとunicode、3.xでのstrでの置換をまとめます。 文字列による単純な置換 (str.replace) str (2.x) / unicode / str (3.x)のどれでもほぼ同じです。 src = 'I like orange.' dst = src.replace('orange', 'apple') # 'I like apple.' str.replaceの第3引数で置換を行う最大回数を指定できます。 str.replace (2.x) str.replace (3.x) 正規表現による置換 (re.sub) str (2.x) / unicode / str (3.x)のどれでもほぼ同じです。 import re src =
Ubuntu 14.04にPhantomJSをインストールする時の手順です。 動作環境 Ubuntu 14.04 PhantomJS 2.0 基本的には公式サイト(http://phantomjs.org/)の手順にのっとるだけ。 リポジトリのクローン $ git clone git://github.com/ariya/phantomjs.git ソースコードのコンパイル $ cd phantomjs $ git checkout 2.0 $ ./build.sh build.shはデフォルトで並列処理をしてくれるみたいなのですが、それでも10分くらいかかりました。 実行ファイルのコピー $ sudo cp bin/phantomjs /usr/local/bin/ 以上でインストールは完了です。 起動 あとはターミナルからでも、スクリプトからでも使えます。 $ phantomjs ph
This document summarizes a presentation on offline reinforcement learning. It discusses how offline RL can learn from fixed datasets without further interaction with the environment, which allows for fully off-policy learning. However, offline RL faces challenges from distribution shift between the behavior policy that generated the data and the learned target policy. The document reviews several
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く