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

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

ただいまの
回答率

91.03%

  • VBA

    1409questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1210questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • Internet Explorer

    248questions

    Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

スクレイピングで特定商品の順位を確認するには

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 258

njkmamagir

score 6

EXCEL VBAを勉強中でWEBから情報収集をしようとしています。色々探しましたがイメージができず、コードもまだの状態で恐縮ですが、お力を貸していただけたらと思います。

不明点

HTMLソースから特定商品の順位を拾ってくるためにどのようにプログラムを組むのか?(考え方?)

考えたこと

・特定classタグ(<div  class="product_img">など)を抽出し、何番目かを確認する
(何番目かを確認する関数?が見つけきれませんでした。)
・ソースを取得→商品名を探す→親要素へたどる→何番目かを確認する?という流れでしょうか? それとも他にいい方法がありますか?
勉強中の今の自分には難しいレベルとは思っていますが、ググるにしてもキーワードがわからずうまくヒットしない→時間がかかっている状況です。
この関数?を使うなどのアドバイスでかまいません。プロの方々がどのように考えるのか、この辺りで調べてみたらなど教えていただけますと幸いです。

作成イメージ

サイトで、特定商品が人気順 or 新着順で上から何番目にいるのかを知りたい。商品は100以上あり、ループで処理する予定です。

特定ブランド × 特定カテゴリーの人気順で、特定商品が上から何番目にいるのかを確認する。

もし上記で見当たらなければ特定ブランド × 特定カテゴリーの新着順で、上から何番目にいるのかを確認する。


view-source:https://www.buyma.com/r/_YVES-SAINT-LAURENT-%E3%82%A4%E3%83%B4%E3%82%B5%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%B3/-C2205/
この一覧から、特定商品の商品タイトルを検索し、上から何番目かを数値として返す。

出品されている商品1つのHTML構成は以下のとおりです。

`<div  class="product_img">
              <a href="/item/30900049/" class="js-track-search-action" data-action="view_item" data-item-id="30900049" data-page="1" data-rank="1">
                <img alt="SAINT LAURENT シティ パッチ バックパック 467985GKQH6" src="https://static-buyma-com.akamaized.net/imgdata/item/170904/0030900049/121443730/210.jpg" />
</a>            </div>

            <div class="product_body">
              <div class="product_name">
                <a href="/item/30900049/" class="js-track-search-action" data-action="view_item" data-item-id="30900049" data-page="1" data-rank="1">SAINT LAURENT シティ パッチ バックパック 467985GKQH6</a>
              </div>

              <div class="product_price">
                  <span class="price_reference">&yen;160,920</span>
                  <span class="font_85"></span>
                <span class="Price_Txt">&yen;105,800</span>
                  <span class="Price_Percent">34&#37;OFF</span>
              </div><!-- .product_price -->


              <div class="product_Brand">
                      <div class="result__oneitem-brandlink-bg">
                        <a href="/brand/YVES_SAINT_LAURENT_%E3%82%A4%E3%83%B4%E3%82%B5%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%B3.html" class="brandname">Saint Laurent</a>
                          <div item-id="30900049" brand-name-eigo="Saint+Laurent" class="result__oneitem-brandlinkwrap">
                            <i class="fab-icon fab-icon-arrow-down--s result__oneitem-brandlink"></i>
                          </div>
                      </div>
                           <div class="brandexp" id="brandexp-item-30900049" data-brand-id='342'><span>i</span></div>
              </div>
              <div id="result__oneitem-popup-30900049" item-id="30900049" class="result__oneitem-popupwrap" style="display: none">
                <div class="result__oneitem-popup">
                  <div class="result__popup-content">
                     <p class=""><i class="fab-icon fab-icon-search fab-design-mg--r5"></i><a href="/r/-C2205/" onClick="javascript:pageTracker._trackEvent(&#x27;PC検索結果&#x27;, &#x27;ブランドコンテキストメニュー/このブランドを条件から外す&#x27;, &#x27;Saint+Laurent&#x27;);">このブランドを条件から外す</a></p>
                  </div>
                  <div class="popup-arrow"></div>
                </div>
              </div>
              <div class="product_Buyer">
                <a href="/buyer/644288.html">candylovecath</a>
              </div><!-- product_Buyer -->
              <div class="fab-design-of--h">
                  <span class="product-status--premium">
                    <a href="http://help.buyma.com/useful/1016/" class="product_PrebuyerLabel" target="_blank">PREMIUM</a>                  </span>
                    <span class="product-status--itemreturn tips" title="送料込の価格表示です。">送料込</span>
              </div>
            </div><!-- .product_body -->
          </li><!-- .product -->
          <li item-id="29911265" class="product ">
            <div class="product_Action" item-url="/item/29911265/">
              <div class="ActBt">
                <a href="" item-id="29911265" class="MoreBtn js-track-search-action" data-action="look_item", data-item-id="29911265"
                  data-page="1" data-rank="2">
                  <span class="n_search_iconset Icon_quickview"></span><br />LOOK
                </a>
                <a href="" item-id="29911265" class="WishBtn js-track-search-action" data-action="add_fav", data-item-id="29911265"
                   data-page="1" data-rank="2">
                  <span class="n_search_iconset Icon_Wish"></span><br />WISH
                </a>
              </div>
            </div><!-- .product_Action -->`

参考にしたサイト

https://www.vba-ie.net/
http://www.ken3.org/cgi-bin/group/vba_ie.asp
http://vbabeginner.net/vba%E3%81%A7%E9%85%8D%E5%88%97%E3%81%AB%E6%8C%87%E5%AE%9A%E6%96%87%E5%AD%97%E5%88%97%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%99%E3%82%8B%E4%BD%8D%E7%BD%AE%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B/
http://officetanaka.net/excel/vba/variable/08.htm

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

・特定classタグ(<div  class="product_img">など)を抽出し、何番目かを確認する
(何番目かを確認する関数?が見つけきれませんでした。)
・ソースを取得→商品名を探す→親要素へたどる→何番目かを確認する?という流れでしょうか? それとも他にいい方法がありますか?

考え方が逆ではないでしょうか。ソースを見ると、

<ul class="clearfix">
<li>・・・</li>
<li>・・・</li>

</ul>

というようにクラス名clearfixのリストの要素として商品データが格納されているので、
このリストの要素(liエレメント)にForループでアクセスして、InnerTextで該当商品名が含まれるかチェックしていって、含まれていたら、その要素のインデックスで何番目かを取得するというようなプログラムにするといいかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/06 13:16

    早速ご回答くださり、ありがとうございます!
    考えが逆ですか、思ってもみませんでした。

    >>このリストの要素(liエレメント)にForループでアクセスして、InnerTextで該当商品名が含まれるかチェックしていって、含まれていたら、その要素のインデックスで何番目かを取得するというようなプログラムにするといいかと思います。

    具体的な回答までありがとうございます。このやり方で一度プログラムしてみたいと思います。またぜひお願いいたします m( _ _ )m

    キャンセル

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

  • ただいまの回答率 91.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    色が反映されないです

    前提・実現したいこと ここにブートストラップを導入して学校の課題サイトを作ろうと考えています。 スタイルがどうしても反映されないので質問をしにきました。 本当は黒になるはずです!!

  • 解決済

    VBA高速化について

    20個のエクセルファイルを読み込み、特定のシートにあるテーブルから特定の値を探し出し、その右横にあるセルの値を取り出します。 集計用のエクセルのテーブルでも、同じ特定の値をテーブル

  • 解決済

    ExcelVBAのクイズソフトを作成しようとしているのですが

    ExcelVBAの選択型クイズソフトを作成しようとしているのですが、userform2のボタンを押すとラベルにuserform1のいくつかあるcheckboxがチェックされているか

  • 解決済

    VBA sheetのセレクト情報をリセットしたいです。

    VBAのプログラム内で、RangeやCellsを指定して.selectをしている箇所が複数あるのですが、 処理が一通り走った後、参照先のsheetを見ると、プログラム内部でSele

  • 解決済

    javascript で table の行を絞り込み表示

    セレクトボックスとチェックボックスを使って、tableの行を絞り込み表示させたいです。 (javascript初心者なのでオープンソースを書き換えて使用しています。) 最初はt

  • 解決済

    VBA Dictionary 取り出し方にて質問

    VBAにて下記実装を行いました。 Dim dictionary As Variant Set dictionary = CreateObject("Scripting.Dict

  • 解決済

    VBAのobject型の存在確認について

    お世話になっております。 VBAでobject型の比較を行っているのですが、 返ってくる値が異なる為、下記エラーになってしまうのですがどのようにすればいいでしょうか ご教授ください

  • 受付中

    VBAでのIE制御で”overflow-y: scroll;”となっているDIV要素のスクロール方法

    タイトルの通りです。 excelのVBAによるのIE制御で、IE自体のスクロールはわかるのですが、overflow-yが設定されている要素のスクロールをどう行うのかがさっぱりわかり

同じタグがついた質問を見る

  • VBA

    1409questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    1210questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

  • Internet Explorer

    248questions

    Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。