質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

1044閲覧

C#でseleniumを活用してMySQLへデータ保存

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/11/28 08:49

前提・実現したいこと

現在、seleniumでスクレイピングを活用しMySQLに取得したデータを保存したいと考えております。

発生している問題・エラーメッセージ

①C#のコンソールアプリで試した際は特に支障なくデータの取得ができたのですが、
ASP.NET MVCに移行するとPathの部分でエラーが出てしまいましたので解決方法が知りたいです。
②C#/selenium/MySQLの3つのキーワードで調べると、自分の知識不足もあるのですが参考となる
サイトが中々見当たりません。皆様が参考にされたサイトをお伺いしたいです。

該当のソースコード

C#

1 public int testcreate(Hoge hoge) 2 { 3 using (connection) 4 using (MySqlCommand command = new MySqlCommand()) 5 { 6 //GMB 7 IWebDriver driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); 8 driver.Navigate().GoToUrl(@"https://www.hogehoge.co.jp"); 9 10 //画面最大化 11 driver.Manage().Window.Maximize(); 12 13 driver.FindElement(By.Name("identifier")).SendKeys("hoge"); 14 driver.FindElement(By.ClassName("piyo")).Click(); 15 System.Threading.Thread.Sleep(2500); 16 driver.FindElement(By.Name("piyo")).SendKeys("hoge"); 17 driver.FindElement(By.ClassName("piyo")).Click(); 18 System.Threading.Thread.Sleep(2500); 19 20 //店舗名検索 21 driver.FindElement(By.XPath("//*hogehoge")).SendKeys("hogehoge"); 22 driver.FindElement(By.XPath("//*hogehoge")).SendKeys(Keys.Enter); 23 24 //タブ変換 25 driver.FindElement(By.ClassName("rpiyo")).Click(); 26 System.Threading.Thread.Sleep(3000); 27 driver.FindElement(By.XPath("//a[@title='huga']")).Click(); 28 29 30 //名前 31 string name = driver.FindElement(By.ClassName("piyo")).Text; 32 33---------------------------------------------ここより下はSQL------------------------------------------------------ 34

補足情報(FW/ツールのバージョンなど)

開発環境
windows10 home
visualstudio 2022
.NET Framework4.8

chromeのバージョンとchrome driverのバージョンは一致しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/11/28 09:16

ASP.NET とどこがどのように関係しているのでしょうか? 質問文からは全く見えません。 スクレイピングとのことですが、相手のサイトの所有者・管理者から許可を得てますか? クローラを作ってアクセスしたら業務妨害とかで逮捕された事例もありますので甘く考えない方が良さそうです。
KOZ6.0

2021/11/28 22:30 編集

このコードを ASP.NET で実行しているのでは? Assembly.GetEntryAssembly() は null を返しそうですよね。 Assembly.GetExecutingAssembly() だとどうなんでしょう? そもそも selenium が ASP.NET で動作するんんでしょうか?
dodox86

2021/11/29 00:57

> C#/selenium/MySQLの3つのキーワードで調べると、自分の知識不足もあるのですが参考となる サイトが中々見当たりません。皆様が参考にされたサイトをお伺いしたいです。 こういうものは、それぞれの知識を理解した後に自分なりに組み合わせて応用するものです。
退会済みユーザー

退会済みユーザー

2021/11/29 01:41

SurferOnWww様 お返事遅くなって申し訳ございません。 ASP.NETで作成していましたので、タグを拝借致しました。 スクレイピングの件に関しましては訳あって自社サイトの分の情報取得なので大丈夫かと思っております。 ご心配して頂き、ありがとうございます。 KOZ6.0様 ご指摘頂いた所を直したところ、別のエラーが出ましたがそこを解消したところ無事seleniumが動きました。 ありがとうございました。 回答の方に記述させて頂こうと思います。 dodox86様 ぐうの音も出ません。 精進してまいります。
guest

回答1

0

ベストアンサー

KOZ6.0様の仰る通り、"Assembly.GetEntryAssembly() "Assembly.GetExecutingAssembly()"に直したところ所定のフォルダ(SeleniumBasicではない別のtempフォルダ)にchrome driverがないとのエラーが出ました。
結果としては所定のフォルダにchrome driverを放り込んだところ無事エラーがなくなりました。

投稿2021/11/29 01:45

編集2021/11/29 01:47
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/11/29 02:48 編集

> ASP.NETで作成していましたので 実行すると Chrome が立ち上がるのでは? そうだとすると、開発環境で Visual Studio から実行して IIS Express で動かすならともかく、運用環境で IIS で運用する場合は動かないと思います。 ASP.NET で selenium というそもそもの考え方が間違っているのでは?
退会済みユーザー

退会済みユーザー

2021/11/29 02:47

なるほどですね。。。 よく考えたらtempファイルを操作している時点で気付くべきでした。。。 となるとやはりAngleSharp辺りを使用するのがベターでしょうか。
退会済みユーザー

退会済みユーザー

2021/11/29 03:14

少なくとも自分には ASP.NET でスクレイピングという発想がまずないです。世の中広いので、それがどうしても必要というケースはゼロではないかもしれませんが、 > 自社サイトの分の情報取得 ということであれば、常識的にはそれ用の API を作るという発想になると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問