質問編集履歴

4

a

2020/07/30 10:22

投稿

Yudohu
Yudohu

スコア25

test CHANGED
File without changes
test CHANGED
@@ -6,59 +6,29 @@
6
6
 
7
7
 
8
8
 
9
- ・そのセレクターはあがそ子構文
9
+ いった条件で指定しているのです
10
10
 
11
- <div class="css-5etuyd-GridImageBannerItem">XXXX</div> CSSセレクターでいうと#layout-XXX > div > div > a:nth-child(a) > divにあころす。
11
+ Aの中に特例のHREFを指定してるAがあれば飛ばすとい作業をやりいのですが、そういったこは可能しょうか?
12
12
 
13
- であったらそのセレクターを飛
13
+ 例え
14
14
 
15
+ 、A HREF = "XXXXXX"
16
+
15
- といった処理をしたいのですが、どのような構文が良いかご教授いただければと思います。
17
+ A href = "tokutei"←こちら
18
+
19
+ a href = "YYYYYY"
16
20
 
17
21
 
18
22
 
19
- 調べ感じだとnotを使えばいい思いますが、当てはめ方がいまいちわかっておりません
23
+ hereだけ飛ばしい場合ですhrefの指定先のtokuteiは常に一定ものます。
20
-
21
- ```html
22
-
23
- あるセレクタを含まない要素を指定
24
-
25
- CSSセレクタ
26
-
27
- selector1:not(selector2)
28
-
29
- 使用例1
30
-
31
- ul > li:not(.blue)
32
-
33
- ------------
34
-
35
- <ul>
36
-
37
- <li>1つ目のliタグ</li> # Here!
38
-
39
- <li class="red">2つ目のliタグ</li> # Here!
40
-
41
- <li class="green">3つ目のliタグ</li> # Here!
42
-
43
- <li class="blue">4つ目のliタグ</li>
44
-
45
- </ul>
46
-
47
- ```
48
24
 
49
25
 
50
26
 
51
- ######概要
52
-
53
- selector = "#layout-%s > div > div > a" % II
54
-
55
- aに当てはまるセレクターを総ざらい
56
-
57
- クリック処理したあと、閉じる。
58
-
59
- 当layoutのaがなくなればII = II + 1にてlayoutの番号を変えてサーチといった流れです。
60
27
 
61
28
 
29
+ 以下にソースコード貼ります。
30
+
31
+ 可能であればご教授お願いします。
62
32
 
63
33
  ```html
64
34
 
@@ -94,6 +64,4 @@
94
64
 
95
65
  driver.find_element_by_tag_name('body').send_keys(Keys.END)
96
66
 
97
-
98
-
99
67
  ```

3

わかりやすくしました。

2020/07/30 10:22

投稿

Yudohu
Yudohu

スコア25

test CHANGED
@@ -1 +1 @@
1
- CSSセレクターで否定も混ぜる場合
1
+ CSSセレクターで取得したリストから、一部除外したい要素が存在する場合のやり方。
test CHANGED
@@ -1,4 +1,4 @@
1
- 初心者です。ご質問させていただきたいのですがCSSセレクターにて
1
+ ご質問させていただきたいのですがCSSセレクターにて
2
2
 
3
3
  selector = "#layout-%s > div > div > a" % II
4
4
 
@@ -13,6 +13,38 @@
13
13
  であったらそのセレクターを飛ばす
14
14
 
15
15
  といった処理をしたいのですが、どのような構文が良いかご教授いただければと思います。
16
+
17
+
18
+
19
+ 調べた感じだと。notを使えばいいのかと思いますが、当てはめ方がいまいちわかっておりません。
20
+
21
+ ```html
22
+
23
+ あるセレクタを含まない要素を指定
24
+
25
+ CSSセレクタ
26
+
27
+ selector1:not(selector2)
28
+
29
+ 使用例1
30
+
31
+ ul > li:not(.blue)
32
+
33
+ ------------
34
+
35
+ <ul>
36
+
37
+ <li>1つ目のliタグ</li> # Here!
38
+
39
+ <li class="red">2つ目のliタグ</li> # Here!
40
+
41
+ <li class="green">3つ目のliタグ</li> # Here!
42
+
43
+ <li class="blue">4つ目のliタグ</li>
44
+
45
+ </ul>
46
+
47
+ ```
16
48
 
17
49
 
18
50
 

2

わかりやすくしました。

2020/07/25 05:18

投稿

Yudohu
Yudohu

スコア25

test CHANGED
File without changes
test CHANGED
@@ -1,100 +1,66 @@
1
1
  初心者です。ご質問させていただきたいのですがCSSセレクターにて
2
2
 
3
- v = dict(first=II, last=I)
4
-
5
- selector = "#layout-%(first)s > div > div > a:nth-child(%(last)s)" % v
3
+ selector = "#layout-%s > div > div > a" % II
6
4
 
7
5
  といった条件で指定しているのですが
8
6
 
9
7
 
10
8
 
9
+ ・そのセレクターはあるがその子構文が
10
+
11
+ <div class="css-5etuyd-GridImageBannerItem">XXXX</div> CSSセレクターでいうと#layout-XXX > div > div > a:nth-child(a) > divにあたるところです。
12
+
11
- その
13
+ であったらそのセレクターを飛ばす
14
+
15
+ といった処理をしたいのですが、どのような構文が良いかご教授いただければと思います。
12
16
 
13
17
 
14
18
 
15
- ・そのセレクターが存在しなかったら、下へスクロールする
19
+ ######概要
16
20
 
17
- ・そのセレクターはあるがその下?が<div class="css-5etuyd-GridImageBannerItem">XXXX</div>であったらそのセレクターを飛ばす
21
+ selector = "#layout-%s > div > div > a" % II
18
22
 
19
- といった処理したのですが、構文がうまく行ってないと思われます。
23
+ aに当てはまるセレクター総ざら
20
24
 
21
- ご教授お願い致したします
25
+ クリック処理したあと、閉じる
22
26
 
23
- ```html
24
-
25
- if len(driver.find_elements_by_css_selector(selector)) == 0:
27
+ 当layoutのaがなくなればII = II + 1にてlayoutの番号を変えてサーチといった流れです。
26
-
27
- driver.find_element_by_tag_name('body').send_keys(Keys.END)
28
-
29
- miss=miss+1
30
-
31
- elif len(driver.find_elements_by_css_selector(selector:not(.css-5etuyd-GridImageBannerItem))) == 0:
32
-
33
- I=I+1
34
-
35
- else:
36
-
37
- ~~~~
38
-
39
-
40
-
41
- ```
42
28
 
43
29
 
44
30
 
45
31
  ```html
46
32
 
47
- I=1
48
-
49
- II=1
33
+ II=0
50
-
51
- miss=1
52
34
 
53
35
  while II < 1000:
54
36
 
55
- #ミスが多いばあいはレイアウトを1上げて他のにサーチかける。
37
+ II = II + 1
56
38
 
57
- if miss == 3:
39
+ selector = "#layout-%s > div > div > a" % II
58
40
 
59
- II=II+1
41
+ elements = driver.find_elements_by_css_selector(selector)
60
42
 
61
- #a:nth-childが10を超えたらレイアウトを1上げて他のレイアウトにサーチかける。
43
+ print(selector)
62
44
 
63
- if I == 11:
64
-
65
- II=II+1
66
-
67
- I=1
68
-
69
- else:
70
-
71
- v = dict(first=II, last=I)
45
+ for _index, element in zip(range(50), elements):
72
-
73
- selector = "#layout-%(first)s > div > div > a:nth-child(%(last)s)" % v
74
46
 
75
47
  print(selector)
76
48
 
77
- if len(driver.find_elements_by_css_selector(selector)) == 0:
49
+ element.click()
78
50
 
79
- driver.find_element_by_tag_name('body').send_keys(Keys.END)
51
+ time.sleep(1)
80
52
 
81
- miss=miss+1
53
+ #クローズの処理
82
54
 
83
- elif len(driver.find_elements_by_css_selector(selector:not(.css-5etuyd-GridImageBannerItem))) == 0:
55
+ selector = "#dialog-root > div:nth-child(9) > div > div.css-9241wp-BasePersonalView > div > div.css-12g7msy-BasePersonalView > button:nth-child(1)"
84
56
 
85
- I=I+1
86
-
87
- else:
57
+ if len(driver.find_elements_by_css_selector(selector)) == 1:
88
58
 
89
59
  element = driver.find_element_by_css_selector(selector)
90
60
 
91
61
  element.click()
92
62
 
93
- time.sleep(1)
63
+ driver.find_element_by_tag_name('body').send_keys(Keys.END)
94
-
95
- I=I+1
96
-
97
- miss=1
98
64
 
99
65
 
100
66
 

1

よりわかりやすくしました。

2020/07/25 05:07

投稿

Yudohu
Yudohu

スコア25

test CHANGED
File without changes
test CHANGED
@@ -44,11 +44,21 @@
44
44
 
45
45
  ```html
46
46
 
47
+ I=1
48
+
49
+ II=1
50
+
51
+ miss=1
52
+
47
53
  while II < 1000:
54
+
55
+ #ミスが多いばあいはレイアウトを1上げて他のにサーチかける。
48
56
 
49
57
  if miss == 3:
50
58
 
51
59
  II=II+1
60
+
61
+ #a:nth-childが10を超えたらレイアウトを1上げて他のレイアウトにサーチかける。
52
62
 
53
63
  if I == 11:
54
64
 
@@ -82,30 +92,10 @@
82
92
 
83
93
  time.sleep(1)
84
94
 
85
- #ピックアップが出てきたときの処理
86
-
87
- selector = '#root > div.css-1xv97fy-Page > main > div > header > div.css-bifdz8-Header'
88
-
89
- if len(driver.find_elements_by_css_selector(selector)) == 1:
90
-
91
- element = driver.find_element_by_css_selector(selector)
92
-
93
- element.click()
94
-
95
- #クローズの処理
96
-
97
- selector = "#dialog-root > div:nth-child(9) > div > div.css-9241wp-BasePersonalView > div > div.css-12g7msy-BasePersonalView > button:nth-child(1)"
98
-
99
- if len(driver.find_elements_by_css_selector(selector)) == 1:
100
-
101
- element = driver.find_element_by_css_selector(selector)
102
-
103
- element.click()
104
-
105
- print(str(I))
106
-
107
95
  I=I+1
108
96
 
109
97
  miss=1
110
98
 
99
+
100
+
111
101
  ```