teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

コメント受けて追記

2019/11/14 05:25

投稿

shirai
shirai

スコア1290

answer CHANGED
@@ -8,4 +8,31 @@
8
8
  urls = [a_tag.get_attribute('href') for a_tag in driver.find_elements_by_tag_name('a') if 'fuat' in a_tag.get_attribute('href')]
9
9
  ```
10
10
 
11
- でどうでしょうか。
11
+ でどうでしょうか。
12
+
13
+ # コメントを受けて追記
14
+
15
+ それではそのlink_listの配下にあるaタグであることを明示してあげるとよいです。
16
+ ```python
17
+ urls = []
18
+ for a_tag in driver.find_elements_by_class_name('link_list')[0].find_elements_by_tag_name('a'):
19
+ urls.append(a_tag.get_attirbute('href'))
20
+ print(urls)
21
+ ```
22
+
23
+ 先にあげた内包表記はSeleniumではなくpythonのテクニックです。
24
+ 私は好んで使っていますが、むやみやたら長くなると
25
+ 可読性が落ちるので、使いどころは考えながらになります。
26
+ 例えば以下2つはどちらも[0, 2, 4, 8]と出力されます。
27
+ ```python
28
+ numbers = []
29
+ for i in range(5):
30
+ if i != 3:
31
+ numbers.append(i*2)
32
+ print(numbers)
33
+ ```
34
+
35
+ ```python
36
+ numbers = [i*2 for i in range(5) if i != 3]
37
+ print(numbers)
38
+ ```

1

ミス

2019/11/14 05:25

投稿

shirai
shirai

スコア1290

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  という仕様です。
6
6
 
7
7
  ```python
8
- urls = [a_tag.get_attribute('href') for a_tag in driver.find_element_by_tag_name('a') if 'fuat' in a_tag.get_attribute('href')]
8
+ urls = [a_tag.get_attribute('href') for a_tag in driver.find_elements_by_tag_name('a') if 'fuat' in a_tag.get_attribute('href')]
9
9
  ```
10
10
 
11
11
  でどうでしょうか。