絞り込み条件を変更する
検索条件を絞り込む
有料ブログの投稿方法はこちら

すべてのカテゴリ

7 件中 1 - 7 件表示
カバー画像

webスクレイピングについて②

seleniumでウェブサイトの情報を取得する際に、ネット環境が不安定であったり、ウェブサイトの情報が大きいと、サイトが表示されるまで時間がかかってしまいます。表示するだけならいいのですが、ウェブサイトを操作したりする場合には、スクレイピングが中断してしまいます。過去のブログでtime.sleep(x)を利用して、コードの進行を意図的に止める方法をお伝えしましたが、止める時間を具体的に指定できる一方で、あらゆるウェブサイトの表示時間をあらかじめ予測することは難しいと思います。そこで、ウェブサイトがすべて表示されたら、次のコードに進むようにしてしまえば、具体的に秒数を指定する必要もなくなります。また、あまりにも表示に時間がかかる場合も考えられますので、待機時間を最大30秒にも指定してみます。具体的には、①必要なモジュールのインストールpip install selenium#seleniumをインストールします。②必要なモジュールをインポートfrom selenium import webdriver#ドライバーのインポートfrom selenium.webdriver.support import expected_conditions as EC#読み込むまで待機する機能のための、インポート。from selenium.webdriver.support.ui import WebDriverWait#最大の読み込み時間を設定するためのインポート③コード内容driver = webdriver.Chrome()  wait = WebDriverWait(driver=dri
0
カバー画像

【selenium】xPathってどうやって取るねん。

みなさんこんにちは。イプシロンです。今回はスクレイピングで必須となるサイト内のxPathの取得方法について書きます。ではいってみましょう。準備ブラウザはChromeを使用し、ココナラのサイトを例にとってご説明します。https://coconala.com/手順1.ココナラのサイトを表示する2.今回は、「ビジネス購入の方はこちら」の文字をスクレイピングします。3.「Shift」+「Ctrl」+「C」を押します。右側にソースコードが表示されます。4.マウスを対象の箇所(ビジネス購入の方はこちら)まで移動します。右側のソースコード上にブルーでハイライトされます。5.ハイライトされた箇所を右クリックします。6.「Copy」→「Copy xPath」を選択します。クリップボードにxPathがコピーされました。7.貼り付けると以下のようになります//*[@id="__layout"]/div/div[1]/div[2]/header/div[1]/div[3]/nav/ul/li[2]/aこれが、対象箇所のxPathになります。8.ソースコードに貼り付けるVBAのソースコードにxPathを以下のように貼り付けます。(今回はメッセージボックスに表示するようにしてみました。)MsgBox Driver.FindElementByXPath("//*[@id=""__layout""]/div/div[1]/div[2]/header/div[1]/div[3]/nav/ul/li[2]/a").Attribute("innerText")9.こんな感じになりました。う~ん。。。。かんたん!!
0
カバー画像

【Excel/VBA/Selenium】chromeが突如起動しなくなったときの対処メモ

みなさんこんにちは。イプシロンです。久しぶりにSeleniumでChromeを立ち上げると、突如エラーになり動かなくなる現象が発生します。久しぶり故にドキっとするので、本日は「chromeが突如起動しなくなる時の対処法」について書きます。症状今まで問題なく使用できていたのに、突如以下のようなエラーが飛び出してきました。「環境変数の値がどっかで変わった?」「そもそも何か設定するんだっけ?」「コードいじる必要あるの?」など、独り言が増え出す可能性大。。。結論(対処法)ChromeDriverを最新のにすれば良い。う~ん。。。かんたん!!!以下、解決までの手順です。手順1.右上の三点→「ヘルプ」→「Goole chromeについて」をクリックして、 Chromeブラウザのバージョンを確認します。2.バージョンを確認します。今回ですと、ver:103.0.5060.134ですね。3.以下のサイトから、該当するバージョンのchrome driverをダウンロードします。4.解凍ソフトで解凍して、chromedriver.exeを入手します。5.Windowsの「ファイル名を指定して実行」を表示させて(ショートカット:Winキー + 「R」キー)、 次の文字列を入力して、SeleniumBasicのインストール先のフォルダを表示します。C:\Users\(ユーザーネーム)\AppData\Local\SeleniumBasic6.先程入手した「chromedriver.exe」を上書きします。(オリジナルのchromedriver.exeはリネームしておくといいかも)。7.解決です。最後に
0
カバー画像

【Excel/VBA/Selenium】Webページに指定要素が存在するかチェックする

みなさんこんにちは。イプシロンです。ECサイトなど商品の在庫状況によって、サイト内の指定要素が変更される場合があります。そのようなサイトに遭遇した際、スクレイピングする際に、webページに指定要素が存在するかをチェックすなければエラーになりますので、本日はその対処法について書いていきます。結論指定要素が存在するかどうかを判断して、分岐処理をすれば問題ありませんWebページに指定要素が存在するかチェックするサンプルコード=================================Public Sub 指定要素の存在チェック()     Dim driver As New Selenium.WebDriver     Dim myBy As New By     Dim sURL As String  sURL = "スクレイピングしたいサイトのURLを入力"         driver.Start "chrome"     driver.Get sURL         '■要素が存在していればTrue/存在しなければFalse     Debug.Print driver.IsElementPresent(myBy.ID("対象要素のIDを入力"))     '■要素が存在してれば処理を行う     If driver.IsElementPresent(myBy.ID("対象要素のIDを入力")) Then         '存在していた場合の処理     Else         '存在していない場合の処理     End If         '■上記は
0
カバー画像

Instagram投稿の「いいね!」を測る方法

仕様が変更され、Instagramの投稿から「いいね」数が直接見えなくなりました。 InstagramAPIから取得すれば取得できるのですが、不慣れな方、環境的に使えない方などもいます。 その中で、「いいね数」を数える方法を開発しましたのでご参考いただければと思います。 なお、これに関わるpython+seleniumでのプログラムを販売していますのでお問い合わせください。 いいね数を取得するにはユーザー数を数える 「○○○、その他が「いいね!」しました」と表示されます。 その他の部分をクリックすると、モーダルウィンドウが開きいいねしてくれたユーザー一覧を確認することが出来ます。 このユーザー数を数えれば良いのですが、1ユーザーずつ数えるのは馬鹿らしいですね。 そのため、ディベロッパーツールを利用してユーザー数をカウントします。 ユーザー数を数えるのには、ディベロッパーツールから要素の高さを取得する 1ユーザーあたりの要素の高さは60pxです。個別ユーザーの親要素の高さを取得して60で割ると「いいね数」が割り出せます。 注意点として、ユーザーを表示したモーダルウィンドウは最後までスクロールしてユーザーを読み込んでおく必要があります。 Instagram側の負荷軽減の措置のため、必要分しかユーザー情報を読み込みません。 この場合、高さが1140なのでいいね数は「19」ということが分かります。 実装 1.その他をクリックしていいねしてくれたユーザーウィンドウを開く2.ユーザー一覧のモーダルウィンドウを最後までスクロールして読み込む (重要)3.ユーザー要素の親要素の高さを知るその他
0
カバー画像

【Selenium】Instagramスクレイピング-ノウハウ

数ある記事の中からご覧頂きありがとうございます!今回は私が趣味でスクレイピングしていた「Instagram」でつまずいたところを皆さんに共有しようと思います。≪実行環境≫・Windows10 pro・Python3.6.3・Pycharm2020-3・Chrome driver 最新バージョン・Google Chormeブラウザー・Chromedriver オプションでモバイルモードにしています1.Instagramにログインする際の注意事項まずInstagramをスクレイピングする際にはinstagramにログインする必要があります。その際下記のような弊害が出てきます。>>高速な処理を心がけていると入力できないとエラーが出たこれは初学者が陥りやすく、単純ですが原因解明に時間がかかることもあ      ります。今までスクレイピングの経験がある方は分かるかと思いますが、      高速な処理でログインを行うとブラウザが入力処理を行う前や行ってい    る途中に「ログインボタン」が押されてしまい次の処理に移れないことがあります。〔対策〕入力やクリック処理の前には必ず「time.sleep(1)」と入れるとこういったバグはなくなります。これは1秒間待機するという意味です。よく使うので必ず覚えておきましょう。〔例〕※あくまで例文なのでインスタグラムで使用はできません。import timefrom selenium import webdriver~省略~driver.find_element_by_id("username").send_keys(”ログインID”)tim
0
カバー画像

検索システムをSeleniumでテストする

はじめにDataMarina(データマリーナ)というのは、自社開発したウェブ検索システムです。サーバー上にDBシステムがなくても、1行=1レコードスタイルのデータ(表計算データやシンプルなDBデータ)のウェブ検索システムを実現できるという点が特長です。また、ToolBox(ツールボックス)はそれを簡単に扱えるようにしたパッケージです。Selenium今回はSelenium(セレニウム)というウェブ自動化ツール・ブラウザオートメーションツールを使って、検索システムのテストをする様子をご覧いただければと思います。Seleniumというのは、人間が文字を入力して、クリックする、といった動作をコンピュータで自動化するためのツールです。Seleniumを操作するためにPythonを使ってプログラムしています。テスト方法この検索システムは、例えば1000レコードのデータを、ある列をキーとして検索するというものです、つまり、テストするとすれば、実際にその列のデータを入力してみて、表示されたものが元のレコードと同じかどうかを検証する必要があります。1つ2つならばテストは簡単ですが、100、1000、10000…ともなると自動化しないとやっていられません。そこで、Seleniumという自動化ツールが登場します。テスト方法は、次の通りです。(1)データ1000レコード、およびデータ100万レコードの架空の検索システムを準備します。両者とも架空の家電情報データで、1000レコードの方はテスト用に準備したもの、100万レコードの方はquiltstyle.netに実際に置いてあるシステムです。両者とも同
0
7 件中 1 - 7
有料ブログの投稿方法はこちら