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