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

質問編集履歴

1

質問内容変更しました。

2021/12/02 12:01

投稿

fideo
fideo

スコア55

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  「次へ」「次のページへ」 をPython,selenium,beutifulsoupで ユーザー名スクレイピングしたいです。
2
- 下記の方法で行いまたが、プから抜ないです。
2
+ 下記の方法で行いまたが、最初の1ペジだユーザー名スクレイピングされます。
3
- 最後ページきましたら、どのようにループから抜けいでしょうか。
3
+ 次のページ行ってもスクレイピングするにはどのようにすれよろしいでしょうか。
4
4
 
5
5
  HTML 「次へ」のページ番号
6
6
  1から4までの番号を指定しています。
@@ -70,22 +70,24 @@
70
70
  soup = BeautifulSoup(html, 'html.parser')
71
71
 
72
72
 
73
- #ユーザ取得
73
+ #ユーザ取得
74
- while True:
75
- users_names = [n.get_text() for n in soup.find_all(class_="fn-user ellip-1 ng-binding")]
74
+ member=soup.find(class_="member-count ng-binding").get_text()
76
- print(users_names)
75
+ print(member)
77
76
 
77
+ #ループのページ数取得
78
+ loop_num=math.ceil(int(member)/100)
78
79
 
79
- # 次へをクリックしページ遷移する
80
- try:
81
- next_button = driver.find_element_by_xpath('//*[@id="mainContainerWrapper"]/member-control/div/div/button[3]/i')
82
- next_button.click()
83
- time.sleep(2)
80
+ print(loop_num)
84
- # 次のボタンがなければループから抜ける
85
- except Exception:
86
- #browser.quit()
87
- break
88
81
 
82
+ for i in range(1,loop_num):
83
+ #次のボタンクリック
84
+ next_button = driver.find_element_by_xpath('//*[@id="mainContainerWrapper"]/member-control/div/div/button[3]').click()
89
85
 
86
+ time.sleep(4)
87
+ #すべてのユーザーを取得
88
+ users_names = [i.get_text() for i in soup.find_all(class_="fn-user ellip-1 ng-binding")]
89
+ print(users_names)
90
90
 
91
+
92
+
91
93
  ```