質問編集履歴

1

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

2020/01/23 04:41

投稿

loveapple2002
loveapple2002

スコア19

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