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

回答編集履歴

1

追記

2019/11/21 14:17

投稿

barobaro
barobaro

スコア1286

answer CHANGED
@@ -25,4 +25,28 @@
25
25
  ```
26
26
 
27
27
  サンプルにdivでclassが"__shi_m_txt"はないのと
28
- これで取得しても「資格」しか取れないと思うのですが
28
+ これで取得しても「資格」しか取れないと思うのですが
29
+
30
+ # 追記
31
+ beautifulsoupの場合
32
+
33
+ ```python
34
+ import requests
35
+ from bs4 import BeautifulSoup
36
+ import re
37
+
38
+ url = 'https://shingakunet.com/gakko/SC003048/gakubugakka/00000000000160337/'
39
+
40
+ r = requests.get(url)
41
+
42
+ r.raise_for_status()
43
+
44
+ soup = BeautifulSoup(r.content, 'html5lib')
45
+
46
+ # 資格の下のテキスト取得
47
+ t = "\n".join([re.sub("\s", "", i) for i in soup.find("span", class_ = "__shi_m_txt", text = "資格").parent.find_next_sibling("div", class_="__shi_gakkaDetail_cont").stripped_strings])
48
+ # 資格のタグ(find)→親タグ(parent)→下の兄弟タグ(find_next_sibling)→前後の空白文字を除去したテキスト→文中の空白文字削除→結合
49
+
50
+ # Webページと同じように、の後の改行を削除
51
+ print(re.sub("、\n", "、", t))
52
+ ```