今回は技術Tipsではなく、個人的に試していて壁にぶち当たったのでアドバイスを 誰かから貰えればいいなと思い、記事にしています。 はじめに 環境 ・一般共有不可、SSOを挟んでログインする必要のあるG Suite ・Google ドライブのドライブFileStreamなどインストール不可 ・GASにて、doPost()で受け取ったデータをドライブに保存するウェブアプリ つまり、未ログインの状態から何をするにもログインが求められるという環境だ。 やっていること PCで生成したデータ(JSONなり、CSVなり)を上記G Suiteの環境のドライブにアップロードするべく、GAS製のウェブアプリへpostで通信。 また、これを自動化。 経緯 元々はPhantomJSを使って上記を実現していたのだが、Chromeが正式にヘッドレスモードを実装したこと、それにともないPhantomJSが開発終了したこ
はじめに JavaScriptによってコンテンツが生成されるサイトは、よく使用されるBeautifulSoup4だけではスクレイピングできません。 例えば「最後までスクロールすると次のコンテンツが表示される」といったサイトです。 URLが変化するわけでもないし、どうすればいいのでしょうか…。 そんなときに登場するのがSelenium+PhantomJSです。 背景 さまざまなケースでWebスクレイピングができるようになりたいという想いのもと、今回も『Pythonクローリング&スクレイピング』という本を参考に実践していきます。 単純に、Webスクレイピングは楽しいです。 やること 「note」というサイトのスクレイピングを行います。 トップページに表示される投稿の タイトル URL 概要 を抽出し、MongoDBやcsv、RSSで保存します。 何ができるのか 以下のようなページからスクレイピ
自分で作っているプロダクトで、一部他のサイトからスクレイピングをする必要があったものの、JSで動的に生成されている要素だったため、スクレイピングができませんでした。 そのため調べてヘッドレスブラウザを使うことにしたのですが、いろいろあってスクレイピングする必要がなくなり、調べた時間を無駄にしたくないと思いまとめました。。 ヘッドレスブラウザとは 調べてみるとGUIのないブラウザと説明をよく見ます。 ヘッドレス Chrome ことはじめによると下記のような説明がありました。 ヘッドレスブラウザは、GUI を持つ必要のない自動テスト環境やサーバー環境にとてもよいツールです。例としては、実際のウェブページに対してなにかテストを実行する、そのページの PDF を生成する、またはただ、そのページがどう表示されるかを検証するなどが挙げられるでしょうか。 GUIはないけどブラウザが行ってくれている処理を
HTMLの情報を取得したいけど、欲しい情報はjavascript等でレンダリング後の情報というのはよくある話です。 毎回手動で取ってくるのは面倒、そういう時に便利なのがPhantomJSです。 つい最近自分も使ってみたので、誰かの参考になればと思いメモとして残します。 動作環境 Amazon Linux AMI release 2018.03 composer 1.5.1 PhantomJSインストール $ cd /usr/local/src $ sudo wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 $ sudo tar jxfv phantomjs-2.1.1-linux-x86_64.tar.bz2 $ sudo ln -s /usr/local/sr
経緯 JSによるレンダリング後のhtmlをスクレイピングしたかったので、phantomjsを使用。 他のページはそういう感じではなく、phpQueryでスクレイピングしていた。 そのためこういう事になりました。 方法 理由はよくわからんが、いい感じになってくれないので、 DOMDocumentにしてからphpQueryに食わせないといけなかった。 //phantomjsでhtmlをとってきて $client = Client::getInstance(); $client->getEngine()->setPath(PHANTOMJS_PATH); $request = $client->getMessageFactory()->createRequest(); $response = $client->getMessageFactory()->createResponse(); $req
はじめに この記事には真新しい内容はありません、スクレイピングを手軽に、言語に縛られないように僕がPhantomJSをどう利用しているかの備忘録的な位置づけになります。 やりたい事 スクレイピングに集中したい スクレイピングでやりたい事はDOMの収集です、必要ならばJavaScriptの処理実行後に収集します、動的なぺージ遷移、POSTによるページ遷移も行います、これらの煩わしい処理はPhantomJSに任せ、スクレイピング以外のコードをなるべく書かないように済ませられるようにします。 どの言語でも扱えるように汎用化しておきたい 各種言語で各種ライブラリが日進月歩で登場しています、必要だと思われたから登場したのでしょうが言語を変える度に最新のライブラリを追って組み込むのは大変です。 JavaScriptでスクレイピングし、結果をJSONで返す部分を切り出せば、各種言語はその処理を呼び出し、
こちらの記事をリスペクトして はてなブックマークからPython人気記事をスクレイピングしてみました。 https://review-of-my-life.blogspot.jp/2017/10/python-web-scraping-data-collection-analysis.html 環境 Ubuntu + python 3.6.3 改修ポイント 掲載のあるコードでは自分の環境で幾つかエラーとなったので対応したり、ほしい情報を付け加えたりとちょっとだけ改修しています。 出力結果の加工はPandasのSeriesとDataFrameを使いました。 Series -> DataFrameへappendです(定番)。 BeautifulSoapを使用しました。 ループ判定処理でpager-nextの判定にはlenではなくオブジェクト取得可否に変換しました。オブジェクト取得できないものに
selenium.common.exceptions.ElementNotVisibleException: Message: {"errorMessage":"Element is not currently visible and may not be manipulated","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"81","Content-Type":"application/json;charset=UTF-8","Host":"xxx.xxx.xxx.xxx:xxxxx","User-Agent":"Python http auth"},"httpVersion":"1.1","met
はじめに 2018/07/31追記 PhantomJSについて こちらで紹介したPhantomJSは現在、リポジトリがアーカイブされて利用は非推奨です。 手軽に実装すらなら現在は以下とpuppeteerの組み合わせがオススメです。 https://www.npmjs.com/package/@serverless-chrome/lambda こちらの組み合わせの記事ついては別途紹介記事を書きます。 DMM.com #1 Advent Calendar 2017 の14日目を担当します、 @mesh1neko です。 普段はAWSやNode.jsをメインに扱っています 今日はブラウザ操作を極力お手軽にやる組み合わせについて書きます。 ▼このAdvent Calendar について 前日の記事は、 @canacel さんの ReduxにImmutable.JSを適用してみた でした。 これは
祝!Chrome Headless移行完了 私が担当しているプロジェクトのFeatureSpecで、Headless Chromeに移行が完了しました。なかなか大変だったので、ハマったポイントを覚えている限り書いておこうと思います。 Capybara.register_driver周辺 画像をダウンロードしない設定など テーブルに行がなくなるとテーブルごとvisibleがfalse扱いになる DatePickerを使用している箇所にfill_inでデータを入れると、DatePickerが表示されっぱなしになり、被っているボタンが押せなくなる driver依存の操作ができなくなる trigger('click')など driver.network_trafficなど alert, confirm, promptなどのダイアログ系が自動でOKを押されなくなる register_driverでH
batで環境変数を設定するというごく当たり前の方法ですが、忘れそうなのでメモ。 何がしたいか 社内のWEBシステムが使い辛く、本質的じゃない作業に小一時間かかるので、操作を自動化したい!とリーダーからHELP 要件は以下の通り。 WEB操作を自動化したい ソフトのインストールはしない もらったらexeかbatを叩くだけ 1はCasperJSで作って解決しました。 問題は2と3。とにかくすぐ動かせる状態で欲しいとのこと! 結論:バッチファイルを用意し、環境変数をセットするだけ DLしたcasperjsとphantomjsを適当に配置します。(今回はbin配下にした) アプリケーション名/ ├ bin/ │ ├ casperjs/ │ │ ├ casperjs.exe │ │ └ casperjs.js │ └ phantomjs/ │ └ phantomjs.exe ├ // some f
class MessageHandler(Handler): '''メッセージハンドリングクラス''' (中略) def run_crawler(self): ''' クロール共通処理 ''' # ユーザー名を取得 send_user = self.get_send_user() user_info = super().get_user_info(send_user) # チャンネル名を取得 channel_info = self.get_channel_info() # ユーザー情報が存在すれば打刻処理を行う if user_info: if not super().is_all_fields_filled(send_user): self.message.reply('設定されていない項目があるため打刻処理を実行できません。') else: # クロール img_path = self
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? こんにちは! 皆さん映画見てますか!! 映画ってほんとうに良いものですよね!!! 私は昨年ついに、立川シネマシティの会員になってしまいました!!!! 突然ですが映画の話を差し込みます ゴーストバスターズ という1984年の大ヒット映画があります。科学兵器で幽霊退治をする映画です。 最近になってあらためて観ますと、劇中の最終目的地となるビルが呪術的な構造をしていて純度の高いSelenium(セレン)を含んでいる、なんて感じの説明があってニヤリとするわけです。 Seleniumの構造体に巣食うPhantomを退治してしまうのね... という
# !/usr/bin/env ruby require 'capybara' require 'capybara/dsl' require 'selenium-webdriver' chrome_option_arg = ['headless', 'disable-gpu', 'window-size=1680,1050'] Capybara.register_driver(:selenium) do |x| Capybara::Selenium::Driver.new( x, browser: :chrome, desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(chrome_options: { args: chrome_option_arg }) ); end Capybara.javascr
sudo apt-get update sudo apt-get install build-essential chrpath libssl-dev libxft-dev -y sudo apt-get install libfreetype6 libfreetype6-dev -y sudo apt-get install libfontconfig1 libfontconfig1-dev -y cd ~ export PHANTOM_JS="phantomjs-2.1.1-linux-x86_64" wget https://github.com/Medium/phantomjs/releases/download/v2.1.1/$PHANTOM_JS.tar.bz2 sudo tar xvjf $PHANTOM_JS.tar.bz2 sudo mv $PHANTOM_JS /usr
brew install phantomjs だと2018年2月時点でv2.1.1しか手に入らず、古いRailsでのテストのため昔のバージョンがほしいので色々調べてみた。 注意!! 解決できてません。素直に最新版で使えるように、poltergeist等の依存ライブラリをアップデートした方が良いです 結論 macだとインストールできなかった。 npmでインストールできるので、してみる。バージョンを調べる。 $ npm view phantomjs versions $ npm install -g phantomjs@1.9.9 インストールはできたが、起動時にエラー。 child_process.js:380 throw new TypeError('"file" argument must be a non-empty string'); ^ TypeError: "file" argu
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く