回答編集履歴
3
型ヒントを削除
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
|
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
|
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
|
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
|
81
|
+
result = main(url)
|
83
82
|
print(result)
|
84
83
|
```
|
85
84
|
|
2
original window でも抽出作業が行われてしまう点を修正
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
|
-
|
14
|
+
|
15
|
-
|
15
|
+
def extract_info(driver: webdriver.Chrome) -> str:
|
16
|
+
# 「1,234」「5,678」のような数字(情報)を引き出す
|
16
|
-
|
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
|
-
|
83
|
+
print(result)
|
79
|
-
|
80
84
|
```
|
81
85
|
|
82
86
|
#### 実行環境
|
1
コードブロックの編成ミス
test
CHANGED
@@ -77,7 +77,7 @@
|
|
77
77
|
if __name__ == "__main__":
|
78
78
|
main()
|
79
79
|
|
80
|
-
```
|
80
|
+
```
|
81
81
|
|
82
82
|
#### 実行環境
|
83
83
|
|