サーバーに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)
conohaでkusangai使ってwordpress運営が超便利
wordpress運営で何が一番最強かって色々やってみたんだけど、conoha上でkusanagi(wordpress)を使うのが一番便利だと思う。
conohaの良い点
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で設定する必要はありません。