回答編集履歴

3

型ヒントを削除

2023/02/14 22:34

投稿

Demerara
Demerara

スコア397

test CHANGED
@@ -1,7 +1,6 @@
1
1
  対象ページの URL がわからないので検証はできてませんが、[ドキュメント](https://www.selenium.dev/documentation/webdriver/interactions/windows/) によると、最初のページのウインドウハンドルを記録しておけばよさそうです。
2
2
 
3
3
  ```python
4
- # type: ignore
5
4
  import time
6
5
 
7
6
  from selenium import webdriver
@@ -12,7 +11,7 @@
12
11
  from webdriver_manager.chrome import ChromeDriverManager
13
12
 
14
13
 
15
- def extract_info(driver: webdriver.Chrome) -> str:
14
+ def extract_info(driver):
16
15
  # 「1,234」「5,678」のような数字(情報)を引き出す
17
16
  numbers = driver.find_element(
18
17
  By.XPATH,
@@ -24,7 +23,7 @@
24
23
  return numbers.text.replace(",", "")
25
24
 
26
25
 
27
- def main(url: str) -> list[str]:
26
+ def main(url):
28
27
  service = Service(ChromeDriverManager().install())
29
28
  options = webdriver.ChromeOptions()
30
29
 
@@ -38,7 +37,7 @@
38
37
  original_window = driver.current_window_handle
39
38
 
40
39
  # 最終結果
41
- results: list[str] = []
40
+ results = []
42
41
 
43
42
  # クリックしたい全ての要素
44
43
  elements = driver.find_elements(
@@ -79,7 +78,7 @@
79
78
 
80
79
  if __name__ == "__main__":
81
80
  url: str = ""
82
- result: list[str] = main(url)
81
+ result = main(url)
83
82
  print(result)
84
83
  ```
85
84
 

2

original window でも抽出作業が行われてしまう点を修正

2023/02/14 13:01

投稿

Demerara
Demerara

スコア397

test CHANGED
@@ -1,7 +1,7 @@
1
- こういうことですかね?
2
- URL がわからないので検証はできてませんが、[ドキュメント](https://www.selenium.dev/documentation/webdriver/interactions/windows/) を読むと、最初のページのウインドウハンドルを記録しておけばよさそうです。
1
+ 対象ページの URL がわからないので検証はできてませんが、[ドキュメント](https://www.selenium.dev/documentation/webdriver/interactions/windows/) によると、最初のページのウインドウハンドルを記録しておけばよさそうです。
3
2
 
4
3
  ```python
4
+ # type: ignore
5
5
  import time
6
6
 
7
7
  from selenium import webdriver
@@ -11,12 +11,23 @@
11
11
  from selenium.webdriver.support.ui import WebDriverWait
12
12
  from webdriver_manager.chrome import ChromeDriverManager
13
13
 
14
- url = ""
14
+
15
- service = Service(ChromeDriverManager().install())
15
+ def extract_info(driver: webdriver.Chrome) -> str:
16
+ # 「1,234」「5,678」のような数字(情報)を引き出す
16
- options = webdriver.ChromeOptions()
17
+ numbers = driver.find_element(
18
+ By.XPATH,
19
+ '//*[@id="main"]/div[8]/table[2]/tbody/'
20
+ "tr[1]/td[1]/table/tbody/tr[11]/td[3]",
21
+ )
22
+
23
+ # ,をなくす
24
+ return numbers.text.replace(",", "")
17
25
 
18
26
 
19
- def main():
27
+ def main(url: str) -> list[str]:
28
+ service = Service(ChromeDriverManager().install())
29
+ options = webdriver.ChromeOptions()
30
+
20
31
  with webdriver.Chrome(service=service, options=options) as driver:
21
32
  driver.implicitly_wait(30)
22
33
  driver.get(url)
@@ -49,20 +60,10 @@
49
60
  for window_handle in driver.window_handles:
50
61
  if window_handle != original_window:
51
62
  driver.switch_to.window(window_handle)
63
+ result = extract_info(driver)
64
+ # 結果を保存
65
+ results.append(result)
52
66
  break
53
-
54
- # 「1,234」「5,678」のような数字(情報)を引き出す
55
- numbers = driver.find_element(
56
- By.XPATH,
57
- '//*[@id="main"]/div[8]/table[2]/tbody/'
58
- "tr[1]/td[1]/table/tbody/tr[11]/td[3]",
59
- )
60
-
61
- # ,をなくす
62
- result = numbers.text.replace(",", "")
63
-
64
- # 結果を保存
65
- results.append(result)
66
67
 
67
68
  # 抽出が終わったタブを閉じる
68
69
  driver.close()
@@ -73,10 +74,13 @@
73
74
  # 一番最初のタブに戻る
74
75
  driver.switch_to.window(original_window)
75
76
 
77
+ return results
78
+
76
79
 
77
80
  if __name__ == "__main__":
81
+ url: str = ""
82
+ result: list[str] = main(url)
78
- main()
83
+ print(result)
79
-
80
84
  ```
81
85
 
82
86
  #### 実行環境

1

コードブロックの編成ミス

2023/02/14 12:06

投稿

Demerara
Demerara

スコア397

test CHANGED
@@ -77,7 +77,7 @@
77
77
  if __name__ == "__main__":
78
78
  main()
79
79
 
80
- ```python
80
+ ```
81
81
 
82
82
  #### 実行環境
83
83