質問編集履歴

6

本文修正

2022/12/12 22:55

投稿

fuku-chann
fuku-chann

スコア82

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  Python Seleniumでスクレイピングするときに、下記コードのuntilによる待機を入れていますが、たまにエラーが出ている時があるため、調査すると、要素がうまく取得できていませんでした。
2
2
 
3
- 下記のコードでは、class xxxが取得できるまで待機を指示していますが、aタグまで表示されていないタイミングで取得している時があるのではないかと懸念しております。
3
+ 下記のコードでは、class xxxが取得できるまで待機を指示していますが、次の要素まで表示されていないタイミングで取得している時があるのではないかと懸念しております。
4
4
 
5
5
  class名 + class名 + valueまで待機を指示するように書き換えることはできますでしょうか?
6
6
  ```python

5

説明文修正

2022/12/12 22:54

投稿

fuku-chann
fuku-chann

スコア82

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  下記のコードでは、class xxxが取得できるまで待機を指示していますが、aタグまで表示されていないタイミングで取得している時があるのではないかと懸念しております。
4
4
 
5
- class名 + aタグまで待機を指示するように書き換えることはできますでしょうか?
5
+ class名 + class名 + valueまで待機を指示するように書き換えることはできますでしょうか?
6
6
  ```python
7
7
  element = wait.until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "xxx")), message = "タイムアウト")
8
8
  ```

4

コード修正

2022/12/12 22:53

投稿

fuku-chann
fuku-chann

スコア82

test CHANGED
File without changes
test CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  取得したい要素
11
11
  ```python
12
- ex = driver.find_element_by_class_name("FPdoLc.lJ9FBc").find_element_by_tag_name("gNO89b").get_attribute("value")
12
+ ex = driver.find_element_by_class_name("FPdoLc.lJ9FBc").find_element_by_class_name("gNO89b").get_attribute("value")
13
13
  ```
14
14
 
15
15
  全文です

3

コード修正

2022/12/12 22:53

投稿

fuku-chann
fuku-chann

スコア82

test CHANGED
File without changes
test CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  取得したい要素
11
11
  ```python
12
- ex = driver.find_element_by_class_name("FPdoLc.lJ9FBc").find_elements_by_tag_name("gNO89b").get_attribute("value")
12
+ ex = driver.find_element_by_class_name("FPdoLc.lJ9FBc").find_element_by_tag_name("gNO89b").get_attribute("value")
13
13
  ```
14
14
 
15
15
  全文です

2

コード修正

2022/12/12 22:52

投稿

fuku-chann
fuku-chann

スコア82

test CHANGED
File without changes
test CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  取得したい要素
11
11
  ```python
12
- ex = driver.find_elements_by_class_name("xxx")[1].find_elements_by_tag_name("a")[0]
12
+ ex = driver.find_element_by_class_name("FPdoLc.lJ9FBc").find_elements_by_tag_name("gNO89b").get_attribute("value")
13
13
  ```
14
14
 
15
15
  全文です
@@ -25,29 +25,8 @@
25
25
  try:
26
26
  driver.get("https://www.google.com/")
27
27
  element = wait.until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "xxx")), message = "タイムアウト")
28
- ex = driver.find_elements_by_class_name("xxx")[1].find_elements_by_tag_name("a")[0]
28
+ ex = driver.find_element_by_class_name("FPdoLc.lJ9FBc").find_element_by_class_name("gNO89b").get_attribute("value")
29
29
  except Exception as e:
30
30
  print(location(), e)
31
31
  print(traceback.format_exc())
32
32
  ```
33
-
34
- ```python
35
- def foo(driver):
36
- x = driver.find_elements_by_class_name("FPdoLc.lJ9FBc")
37
- print(location(), len(x))
38
- if len(x)>=1:
39
- y = x[0].find_elements_by_class_name("gNO89b")
40
- print(location(), len(y))
41
- if len(y)>0:
42
- return y[0]
43
- return False
44
- try:
45
- driver.get("https://www.google.com/")
46
- # sleep(3)
47
- ex1 = wait.until(foo(driver), message = "タイムアウト")
48
- ex2 = driver.find_element_by_class_name("FPdoLc.lJ9FBc").find_element_by_class_name("gNO89b").get_attribute("value")
49
- print(location(), ex2)
50
- except Exception as e:
51
- print(location(), e, traceback.format_exc())
52
- print(traceback.format_exc())
53
- ```

1

コード修正

2022/12/12 22:50

投稿

fuku-chann
fuku-chann

スコア82

test CHANGED
File without changes
test CHANGED
@@ -30,3 +30,24 @@
30
30
  print(location(), e)
31
31
  print(traceback.format_exc())
32
32
  ```
33
+
34
+ ```python
35
+ def foo(driver):
36
+ x = driver.find_elements_by_class_name("FPdoLc.lJ9FBc")
37
+ print(location(), len(x))
38
+ if len(x)>=1:
39
+ y = x[0].find_elements_by_class_name("gNO89b")
40
+ print(location(), len(y))
41
+ if len(y)>0:
42
+ return y[0]
43
+ return False
44
+ try:
45
+ driver.get("https://www.google.com/")
46
+ # sleep(3)
47
+ ex1 = wait.until(foo(driver), message = "タイムアウト")
48
+ ex2 = driver.find_element_by_class_name("FPdoLc.lJ9FBc").find_element_by_class_name("gNO89b").get_attribute("value")
49
+ print(location(), ex2)
50
+ except Exception as e:
51
+ print(location(), e, traceback.format_exc())
52
+ print(traceback.format_exc())
53
+ ```