seleniumでHeadless Chromeを使い、WordPressのプラグイン情報を取得してみた。

はじめに

WordPressのプラグイン情報の取得を自動化したいなーと思い、今回の記事の作成しました。

具体的にはseleniumでHeadless Chromeを使い、スクレイピングしてWordPressのプラグイン情報(バージョン情報など)を取得したいと思います。

今回はWordPressのプラグインから”All in One SEO Pack”の情報を取得してみます。

環境構築

seleniumをpipでインストールしておきます。

pip install selenium

コード

search_plugin.py

search_plugin.py
-------------------------------------------------------
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options


def main():

    keyword = "All in One SEO Pack"

    # オプションを作成
    options = webdriver.ChromeOptions()

    # ヘッドレスブラウザ指定
    options.add_argument('--headless')
    driver = webdriver.Chrome(options=options)

    # WordPressを開く
    driver.get('https://ja.wordpress.org/plugins/')

    # タイトルにWordPressが含まれているのを確認
    assert 'WordPress' in driver.title

    print("\n" + driver.title)

    # 検索窓を取得
    input_elem = driver.find_element_by_name('s')
    # キーワードを入力
    input_elem.send_keys(keyword)
    # 検索
    input_elem.send_keys(Keys.RETURN)

    # 画面切り替わりを待つため適当な時間待つ
    time.sleep(2)

    # タイトルにAll in One SEO Packが含まれているのを確認
    assert 'All in One SEO Pack' in driver.title

    # 検索結果のタイトルとURLを表示する。
    for a in driver.find_elements_by_css_selector('h2 > a'):
        if(a.text == keyword):
            print("\n" + a.text)
            print(a.get_attribute('href'))

            a.click()
            time.sleep(2)
            print("\n" + driver.title + "\n")
            assert "All in One SEO Pack" in driver.title

            # スクリーンショットを撮る。       
            driver.set_window_size(1250, 1500)
            driver.save_screenshot("test.png")

            # プラグイン情報の取得
            for b in driver.find_elements_by_css_selector(".widget.plugin-meta > ul > li"):
                print(b.text)
            break

    # ブラウザを終了
    driver.quit()


if __name__ == "__main__":
    main()

実行結果

上のコードを実行した結果、以下のような情報が取得できました。

$ python search_plugin.py

WordPress プラグイン | WordPress.org

All in One SEO Pack
https://ja.wordpress.org/plugins/all-in-one-seo-pack/

All in One SEO Pack – WordPress プラグイン | WordPress.org

バージョン:
2.12
最終更新:
4週間前
有効インストール数:
2百万+
WordPress バージョン:
4.6 またはそれ以上
検証済み最新バージョン:
5.1.1
PHP バージョン:
5.2.4 またはそれ以上
言語:
全51言語を表示
タグ:
google search consolemeta descriptionmeta titleseoxml sitemap
詳細を表示

スクリーンショット

test.png

取得した情報がスクリーンショットの右側にあるプラグイン情報(バージョンなど)と一致していることから正しく情報の取得ができたことがわかります。