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

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

新規登録して質問してみよう
ただいま回答率
85.37%
div

HTMLの<div>タグです。<div>要素は特に意味を持っていません。ひとかたまりのコンテンツに使用されるか、(セマンティックとして)他の要素では記述できないコンテンツに使用されることが多いです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

selenium

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

Q&A

解決済

3回答

4439閲覧

Seleniumを使用してdivタグ内のaタグを取得したいです。

tako7

総合スコア7

div

HTMLの<div>タグです。<div>要素は特に意味を持っていません。ひとかたまりのコンテンツに使用されるか、(セマンティックとして)他の要素では記述できないコンテンツに使用されることが多いです。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

selenium

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

0グッド

0クリップ

投稿2021/04/20 06:23

Seleniumを使用したdivタグ内のaタグの取得方法を教えて頂きたいです。

取得したい要素は下記のコード内です。

Ruby

1<div class="block-content"> 2 <div class="block-heading"> 3 <a href="https://www~~~~~~"> 4 <i class="fa fa-map"> 5 ::before 6 </i> 7 "このテキストを取得したいです。" 8 </a> 9 </div> 10</div>

seleniumを使用し、cssを取得する方法等色々試したのですが、テキストが帰ってくることはなかったです。

ご教示頂けると大変ありがたいです。
よろしくお願いいたします。

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

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

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

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

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

m.ts10806

2021/04/20 07:24

ご自身が組んでみたコードをご提示ください。
tako7

2021/04/20 08:54

テキストを取得することができれば良いのですが、 xpathで取得する下記のような方法を試していました。 name = @driver.find_element(xpath: "//i[@class='fa fa-map']/..").text[/(?<=before \")\w+ \w+ \w+ \w+ \w+/] def name @driver.find_element(xpath: "//i[@class='fa fa-map']/..").text[/(?<=before \")\w+ \w+ \w+ \w+ \w+/] end このような形で取得したいと思っています。
guest

回答3

0

自己解決

どうにか綺麗に取得したかったのですが、下記のような方法(単純にclass_nameの要素を取得して加工する)で解決しました。
回答いただいた方々、ご丁寧に対応いただきありがとうございました。

ruby

1elements = @driver.find_elements(:class_name, "block-content") 2targetText = elements.first.text.lines.first.chomp 3(実際には分けて変数に入れています。)

block-contentには改行されたテキストが大量に入っているので、その中から最初のテキストを行ごとに配列にし、その配列の中から一番最初の要素を取得し、chompで改行文字を削除。

手っ取り早くやろうとせずに面倒でも加工した方が楽ということがわかりました。

投稿2021/04/22 00:50

tako7

総合スコア7

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

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

0

XPathのtext()で「直下のテキストノード」が取れます。

Ruby

1@driver.find_element(xpath: "//i[@class='fa fa-map']/../text()").text.strip

投稿2021/04/20 11:43

otn

総合スコア85762

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

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

tako7

2021/04/21 01:32

ありがとうございます。 ご教示頂いた記述を試した見たのですが、要素が取得できていないようです。 こちら、<div class="block-content">や <div class="block-heading"> に入っていくような記述は必要ないのでしょうか。
otn

2021/04/21 04:31

失礼しました。XPathとしては正しいのですが、Seleniumのfind_elementだとtext()は指定できないようですね。 回避策は無さそうな気がするので、 案1:質問のコメントにお書きのように正規表現でなんとかする 案2:driver.page_sourceでHTMLを得て、NokogiriやREXMLのようなXPath1.0の全機能を使えるツールで解析する
tako7

2021/04/22 00:50

ご丁寧にありがとうございました。 大枠の要素を取得して加工する方法で解決しました。 ありがとうございました。
guest

0

Python

1from selenium import webdriver 2 3from selenium.webdriver.chrome.options import Options 4 5options = Options() 6 7options.binary_location = "Chrome path" 8 9driver = webdriver.Chrome(chrome_options=options, executable_path="ChromeDriver.exe") 10 11driver.get('url') 12 13element = driver.find_element_by_class_name('block-content') 14 15aTag = element.find_element_by_tag_name("a") 16 17url = aTag.get_attribute("href") 18 19print(url) 20

参考URL

投稿2021/04/20 07:37

ITCoder

総合スコア8

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

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

tako7

2021/04/20 09:15

現在rubyで書いているので、似たようなことをやってみたのですが、urlの取得しかできませんでした。 element = @driver.find_element(:class_name, 'block-content') aTag = element.find_element(:tag_name, "a") url = aTag.attribute("href") print (url)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問