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

質問編集履歴

1

課題、できたことなどの追記

2020/01/23 04:41

投稿

loveapple2002
loveapple2002

スコア19

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,28 @@
1
+ pythonのスクレイピングを用いて、特定のHPから記事をslackに送信する仕組みを作りたいです。
2
+ 最終的には1時間に一度HPの更新を確認し、新規記事を自動でslackに届けてくれるような仕組みを考えています。
3
+
4
+ 思考プロセスは
5
+ ①まず特定のHPから欲しいURLをひっぱてくる
6
+ ②それをslackに送信できる仕組みを作る
7
+ ③定期更新を認識する仕組みを作る
8
+
9
+ と考えています。
10
+
11
+ ##できたこと
12
+ a)スラックへのテストメッセージの送信
1
13
  ```python
14
+ slack = slackweb.Slack(url="質問なのでこのリンクは隠しています。")
15
+ slack.notify(text="テストメッセージ")
16
+
17
+ ```
18
+
19
+ b)スクレイピングによる欲しいURLの取得
20
+ 参考コードの「#ここより上を実行すると、該当URLから記事のリンクをスクレイピングすることができます」に記載の通り欲しいURLのスクレイピングには成功しました。
21
+
22
+
23
+
24
+ ##コード
25
+ ```python
2
26
  import requests
3
27
  from bs4 import BeautifulSoup
4
28
  import slackweb
@@ -19,17 +43,26 @@
19
43
 
20
44
  ```
21
45
 
46
+ ##課題
22
- pythonのスクレイピングを用いて、特定のHPから記事をslackに送信する仕組みを作りたいです。
47
+ テストメッセージ送信・欲しいURLのスクレイピングは個別行うと機能します。
23
- 最終的には1時間に一度HPの更新を確認、新規記事を自動でslackに届けてくれるような仕組みを考えてい
48
+ かし組み合わせるとうく機能しません
24
49
 
25
- 思考プロスは
50
+ ##エラーメッージ
51
+ File "slack.py", line 15, in <module>
52
+ slack.notify(text=i)
53
+ File "/Users/user/.pyenv/versions/3.6.5/lib/python3.6/site-packages/slackweb/slackweb.py", line 26, in notify
26
- ①まず特定のHPから欲しいURLをひっぱてくる
54
+ return self.send(kwargs)
55
+ File "/Users/user/.pyenv/versions/3.6.5/lib/python3.6/site-packages/slackweb/slackweb.py", line 32, in send
56
+ payload_json = json.dumps(payload)
57
+ File "/Users/user/.pyenv/versions/3.6.5/lib/python3.6/json/__init__.py", line 231, in dumps
58
+ return _default_encoder.encode(obj)
59
+ File "/Users/user/.pyenv/versions/3.6.5/lib/python3.6/json/encoder.py", line 199, in encode
60
+ chunks = self.iterencode(o, _one_shot=True)
61
+ File "/Users/user/.pyenv/versions/3.6.5/lib/python3.6/json/encoder.py", line 257, in iterencode
62
+ return _iterencode(o, 0)
63
+ File "/Users/user/.pyenv/versions/3.6.5/lib/python3.6/json/encoder.py", line 180, in default
27
- ②それをslackに送信できる仕組みを作る
64
+ o.__class__.__name__)
28
- ③定期更新を認識する仕組みを作る
65
+ TypeError: Object of type 'Tag' is not JSON serializable
29
66
 
30
- と考えています。
31
67
 
32
- 参考コードの「#ここより上を実行すると、該当URLから記事のリンクをスクレイピングすることができます」に記載の通り欲しいURLのスクレイピングには成功しました。
33
- しかしそれをslackに送信することができません。
34
-
35
68
  どこがダメなのか教えていただけると幸いです。