サーバーにphantomjsをおいてスクレイピングを動かしたい時

サーバーにphantomjsを置くなら、npmからインストールするのがおすすめ

sudo yum install epel-release
sudo yum install nodejs npm

でnpmをインストールして

npm install phantomjs

でphantomjsをインストールする。
node_modulesというフォルダができてその中にphantomjsがインストールされるのでそこにパスを張る。
実際のインスコ先は
node_modules/phantomjs/bin/phantomjs
になる。

from selenium import webdriver
import time
from bs4 import BeautifulSoup

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = (
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 "
    "(KHTML, like Gecko) Chrome/15.0.87"
)

driver = webdriver.PhantomJS("/home/user/app/node_modules/phantomjs/bin/phantomjs", desired_capabilities=dcap)

url="http://yahoo.co.jp" #yahooは単なるたとえ
driver.get(url)

#スクリーンショットのとり方
driver.save_screenshot("./screen_shot_1.png")

# javascriptのレンダリングを確実に待つ、読み込み待機 time.sleep(5)とか使ってもいいけど、下記の方が確実でいい。
#例外処理をちゃんと書くともっと良い
wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "articleList")))

#BeautifulSoupで欲しい部分を
soup = BeautifulSoup(driver.page_source,'html.parser')

#h2要素でclassがarticleList__titleのものを引っ張ってくる。
h2_element = soup.find_all("h2", class_="articleList__title")

#h2要素内からa要素を探してきて、href(リンク)とaタグに囲まれている文字列を抜き出す。
for article in h2_element:
        print(article.find("a").get("href"))
   print(article.find("a").string)

scpで嵌まるなど

scpが突然できなくなった。
sshで入ることはできるのに、ファイルを送ることができなくなった。

scl enable devtoolset-2 bash
.cshrcファイルに最近加えたのが問題だったらしい。

scpが使えなくなったら設定ファイルに何か最近加えてないか考えると良い。

参考サイト

unix.stackexchange.com

fftwのインストール

高速フーリエ変換のライブラリであるfftwであるが、
fortranのプログラムをコンパイルするのにfftw3.hなるヘッダが必要になる。

yum -y install fftw ではfftw3.hがインストールされないので

yum -y install fftw fftw-develとfftw-develも入れてやる必要がある。
はまったやんか

6485 前澤給装工業

平成29年3月期 第1四半期決算短信より

現金 112億
手形 55億
電子記録債権 33億
有価証券 2億
投資有価証券 20億

負債 68億

ネットネット資産 112+55+33+2+20−68= 154億円

時価総額 168億円

実質 14億円
平均的に見て12億ぐらいの純利益をだしている。
最も悪い2011年3月期にも9.5億の純利益。

事業は水道用給水装置シェア4割と地味で、成長性はあんまりなさそうだけど、安いのでのんびり持てばむくわれそう。

conohaでkusangai使ってwordpress運営が超便利

wordpress運営で何が一番最強かって色々やってみたんだけど、conoha上でkusanagi(wordpress)を使うのが一番便利だと思う。

conohaの良い点

VPSクラウドのいいところどり

VPS的に安い

Amazon Web Service (AWS)ってページビュー数がめちゃくちゃ多くて儲かるサイトならコストもきにならないのでしょうが、弱小個人が運営するには結果的に結構高くなります。conohaだと定額なのであとで請求に震えるというようなことがありません。

クラウドのようにスケールが簡単

でも、VPSってPVが伸びてきた時に対応するのが結構面倒です。
上位のプランに変更して、wordpressをのせかえて、サーバーの設定をまた最初からして。。。うんざりですよね。

conohaはクラウドの良い面もあって、PVが伸びてきて上のプランに変更する時に数クリックで簡単にCPUやメモリ量を増やせます。

個人サイト運営者にとっての最適解な気がします。

kusanagi がとっても便利な件

conoha VPSではkusanagiという超高速wordpress仮想マシンをほぼデフォルトで(最初に立ち上げる時にクリック一つでという意味ですが)使うことができます。wordpressっていうと弱小サーバーで運営すると結構重いので、運営しだすと高速化が結構重要な要素になってきます。

サイトの高速化ってとても重要です。
ページを閲覧しに来る人は遅いサイトを待ってくれません。
自分だって、重いサイトだなと思ったらとっとと別サイトに移動しますよね。

しかもグーグルの検索順位にもこのサイトのスピードというものが影響します。
グーグル先生はサイトのスピードを、検索順位に反映させるアルゴリズムを使っているからです。

で、kusanagiはこの高速化を勝手にやってくれているわけです。
wordpressの高速化に必要な点
phpのバージョンが"7"
サーバーソフトがapacheではなく軽量なnginxを選べる

もちろん、自分で設定できる人はこれを使う必要はないんですが、複数サイトを立ち上げる時にひとつひとつ設定するのって面倒ですよね。
最初からそうしてくれるにこしたことはないんです。

しかも、kusanagiはページキャッシュをすることなく高速化を実現しています。
ページキャッシュをすると高速にはなるんだけど、変更点が反映されなかったり、ちょっと高度なサイト作成にはむかないんですよね。
だからページキャッシュしない方が良いに決まってる。
kusanagiさんあんたはえらい!

加えて、昨今、サイトを常時SSL化せよという波が来ています。
Webアドレスの始まりがhttpではなくhttpsというサイト増えていますよね。
この設定はじめてやると結構手間取るんだけど、kusanagiでは超簡単。
最初に設定するときに設定してもいいんですが、
後でも、簡単なコマンドでできます。
kusanagi ssl --email xxx@gmail.com example.com
SSL証明書をLet’s Encryptから取得してくれます。(example.comのところに自分のサイト)

びっくりするぐらい簡単です。

しかも、httpへのアクセスをhttpsへリダイレクトしたければ、
kusanagi ssl --https redirect
で一発です。

いろんなファイルを書き換える必要はありません。

kusanagi ssl --auto on
としておけば、Let’s Encryptの証明書の自動更新をしてくれます。
cronで設定する必要はありません。

kusanagiwordpress使いが苦手なサーバー周りのお仕事を丸抱えでやってくれます。