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

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

新規登録して質問してみよう
ただいま回答率
85.47%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

Q&A

解決済

1回答

1138閲覧

[python]seleniumで取れない値について

Dadada_c.

総合スコア59

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

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

0グッド

0クリップ

投稿2018/10/23 21:30

#sleniumuで下記の様な値が取れるかを知りたい

html

1<li data-ng-repeat="skuItemOption in skuItem.PropertyList track by $index" 2data-tooltip-content="缺貨中" 3data-ng-class="{'actived': ddToCartDirectiveCtrl.IsSKUSelected(skuItemIndex+1, skuItemOption), 'disabled tooltip tooltip-bottom': 'unselected': (!SelectedSKUPropertySet&amp;&amp;skuItemIndex!=0)|| SelectedSKUPropertySet===null}" class="sku-li disabled tooltip tooltip-bottom" data-ng-hide="AddToCartDirectiveCtrl.IsSKUHidden(skuItemIndex+1, skuItemOption)"><a ng-click="AddToCartDirectiveCtrl.SelectSku(skuItemIndex+1, skuItemOption, skuItem.Title)" href="javascript:void(0)" class="sku-link" ng-bind="skuItemOption.Name">40</a></li> 4

上記の様なhtmlがあるのですが、その中で、
data-tooltip-content="缺貨中" 」この箇所の「缺貨中」があれば取得したいです。
(他のli要素にはこれがないものもあります)

そもそもseleniumではこの様なidやclassではない値を取得できるのでしょうか・・・?
もし、取得可能であればどのようなキーワードで検索をかけるとヒントがでてきますでしょうか…

不躾ですがご教示いただけますと幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

以下のようなスクリプトでいかがでしょうか?

scraping.py:

python

1from bs4 import BeautifulSoup 2 3search_attr = 'data-tooltip-content' 4 5with open('./test.html') as f: 6 soup = BeautifulSoup(f.read(), 'lxml') 7 items = [item[search_attr] for item in soup.find_all() if search_attr in item.attrs] 8 print(items)

 

上記の scraping.py を使って、以下の test.html を解析します。
(※ scraping.py と test.html は、 同じディレクトリ内に作成してあるものとします)

test.html (テスト用HTML):

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <title>test</title> 6</head> 7<body> 8<ul> 9 <li 10 data-ng-repeat="skuItemOption in skuItem.PropertyList track by $index" 11 data-tooltip-content="缺貨中1" 12 data-ng-class="{'actived': ddToCartDirectiveCtrl.IsSKUSelected(skuItemIndex+1, skuItemOption), 'disabled tooltip tooltip-bottom': 'unselected': (!SelectedSKUPropertySet&amp;&amp;skuItemIndex!=0)|| SelectedSKUPropertySet===null}" class="sku-li disabled tooltip tooltip-bottom" data-ng-hide="AddToCartDirectiveCtrl.IsSKUHidden(skuItemIndex+1, skuItemOption)"><a ng-click="AddToCartDirectiveCtrl.SelectSku(skuItemIndex+1, skuItemOption, skuItem.Title)" href="javascript:void(0)" class="sku-link" ng-bind="skuItemOption.Name">40</a> 13 </li> 14 <li 15 data-ng-repeat="skuItemOption in skuItem.PropertyList track by $index" 16 data-tooltip-content="缺貨中2" 17 data-ng-class="{'actived': ddToCartDirectiveCtrl.IsSKUSelected(skuItemIndex+1, skuItemOption), 'disabled tooltip tooltip-bottom': 'unselected': (!SelectedSKUPropertySet&amp;&amp;skuItemIndex!=0)|| SelectedSKUPropertySet===null}" class="sku-li disabled tooltip tooltip-bottom" data-ng-hide="AddToCartDirectiveCtrl.IsSKUHidden(skuItemIndex+1, skuItemOption)"><a ng-click="AddToCartDirectiveCtrl.SelectSku(skuItemIndex+1, skuItemOption, skuItem.Title)" href="javascript:void(0)" class="sku-link" ng-bind="skuItemOption.Name">40</a> 18 </li> 19 <li 20 data-ng-repeat="skuItemOption in skuItem.PropertyList track by $index" 21 data-tooltip-content="缺貨中3" 22 data-ng-class="{'actived': ddToCartDirectiveCtrl.IsSKUSelected(skuItemIndex+1, skuItemOption), 'disabled tooltip tooltip-bottom': 'unselected': (!SelectedSKUPropertySet&amp;&amp;skuItemIndex!=0)|| SelectedSKUPropertySet===null}" class="sku-li disabled tooltip tooltip-bottom" data-ng-hide="AddToCartDirectiveCtrl.IsSKUHidden(skuItemIndex+1, skuItemOption)"><a ng-click="AddToCartDirectiveCtrl.SelectSku(skuItemIndex+1, skuItemOption, skuItem.Title)" href="javascript:void(0)" class="sku-link" ng-bind="skuItemOption.Name">40</a> 23 </li> 24</ul> 25</body> 26</html>

scraping.py を実行すると以下が表示されると思います。

['缺貨中1', '缺貨中2', '缺貨中3']

参考までに、以下は私の手元のMacで実行したログです。

イメージ説明

以上、参考になれば幸いです。

投稿2018/10/23 21:51

編集2018/10/23 22:53
jun68ykt

総合スコア9058

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

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

Dadada_c.

2018/10/23 22:34

ありがとうございます!取得できました!!! こんな書き方をすればいいんですね。勉強になりました! これからもぜひとも色々ご教示ください!
jun68ykt

2018/10/23 22:38

どういたしまして。解決されたようで、よかったです ????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問