今回のテーマ
こんにちは、サルモリです。
今回の記事は下記について書いていきます。
今回のテーマ
Seleniumを使用してWordPressの内容を取得する方法
需要があるか分かりませんが、今回はSeleniumを使用して、WordPressの内容を取得するプログラムを作っていきます。
Seleniumの使い方は下記をクリックすれば書いてあるので、見てください。
自動化の関連記事はこちら
今回のプログラムの目標
今回のプログラムの目標は記事のタイトルを指定して、その記事の内容をString型の変数に設定するまでとします。
下記のWordPressの記事を取得します。「Fruit」を指定して、記事内容の果物の文字列を取得してみましょう。
大まかな処理は下記の処理となります。
step
1WordPressのログイン
step
2指定した記事を選択
step
3記事内容を取得
自動化の関連記事はこちら
WordPressのログイン
認証の部分は手入力です。入力し、Enterキーを押下すれば、ログインできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using System; using System.Collections.Generic; using OpenQA.Selenium; using OpenQA.Selenium.Edge; using System.Linq; namespace WordPressprogram { class Program { static void Main(string[] args) { string wordpressURL = "https://csharpprogram.com/wp-admin/edit.php"; string wordpressID = "ID"; string WordpressPassWord = "PassWord"; string WordPressTitle = "「Fruit」 (編集)"; var service = EdgeDriverService.CreateDefaultService(); var options = new EdgeOptions(); var driver = new EdgeDriver(service, options); driver.Navigate().GoToUrl(wordpressURL); driver.FindElement(By.Id("user_login")).SendKeys(wordpressID); driver.FindElement(By.Id("user_pass")).SendKeys(WordpressPassWord); driver.FindElement(By.Id("siteguard_captcha")).Click(); } } } |
指定したタイトルの記事を選択
指定した記事をクリックするプログラムです。指定したタイトルに一致した記事がある場合は記事をクリックします。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
driver.Manage().Window.Maximize(); while (true) { if (driver.FindElements(By.XPath("//a[@aria-label='" + WordPressTitle + "']")).Count() > 0) { break; } else { driver.FindElement(By.XPath("//a[@class='next-page button']")).Click(); } } driver.FindElement(By.XPath("//a[@aria-label='" + WordPressTitle + "']")).Click(); |
記事が見つかった場合は記事をクリックし、見つからなかった場合は次ページボタンをクリックするようにしました。
見つからなかった場合はエラーがでます。
記事内容を取得
記事内容の取得を行います。テキストモードに変更した後に、内容を取得します。
1 2 3 |
driver.FindElement(By.Id("content-html")).Click(); var strcontents = driver.FindElement(By.XPath("//textarea[@id = 'content']")).Text; Console.WriteLine(strcontents); |
自動化の関連記事はこちら
まとめ
全体のプログラムは下記となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
namespace WordPressprogram { class Program { static void Main(string[] args) { string wordpressURL = "URL"; string wordpressID = "ID"; string WordpressPassWord = "PassWord"; string WordPressTitle = "「Fruit」 (編集)"; var service = EdgeDriverService.CreateDefaultService(); var options = new EdgeOptions(); var driver = new EdgeDriver(service, options); driver.Navigate().GoToUrl(wordpressURL); driver.FindElement(By.Id("user_login")).SendKeys(wordpressID); driver.FindElement(By.Id("user_pass")).SendKeys(WordpressPassWord); driver.FindElement(By.Id("siteguard_captcha")).Click(); Console.ReadKey(); driver.Manage().Window.Maximize(); while (true) { if (driver.FindElements(By.XPath("//a[@aria-label='" + WordPressTitle + "']")).Count() > 0) { break; } else { driver.FindElement(By.XPath("//a[@class='next-page button']")).Click(); } } driver.FindElement(By.XPath("//a[@aria-label='" + WordPressTitle + "']")).Click(); driver.FindElement(By.Id("content-html")).Click(); var strcontents = driver.FindElement(By.XPath("//textarea[@id = 'content']")).Text; Console.WriteLine(strcontents); } } } |
上記のプログラムで記事内容を取得することができます。試してみてください。
自動化の関連記事はこちら