質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

2回答

1313閲覧

Slackのチャンネルに流れるリンクを取得するコード

gvbatei

総合スコア10

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

1クリップ

投稿2016/06/13 12:54

###前提・実現したいこと
ここに質問したいことを詳細に書いてください

現在、情報共有のためにチームのSlackのチャンネル上で流れるリンクが一週間で膨大な数になるため
チャンネルに投稿されたURLを一括で取得できるコードを探しています。
できればメインはPythonを使っているのでPythonでコードをいただけると嬉しいです。
もし既に書かれている方がいらっしゃいましたら、教えていただけますでしょうか?

イメージcsv or text

<table border=1> <tr><th></th><th>日付</th><th>URL</th></tr> <tr><td>2016-06-13</td><td>google.com</td><td>B-1</td></tr> <tr><td>2016-06-13</td><td>google.com</td><td>B-2</td></tr> <tr><td>2016-06-13</td><td>google.com</td><td>B-3</td></tr> </table>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

SlackだとWebAPIもあるので、そちらからまとめてピックアップするのが一番早そうな気がします。

https://api.slack.com/methods/channels.history

このAPIでチャンネルのメッセージ履歴を取れるので、そこからURL部分を抽出するなどはできるかと。
抽出urllib2やrequestsなどライブラリでHTTP叩くでもいいですし、
APIクライアントのライブラリもあるみたいなので、その辺りはお好みで。

投稿2016/06/14 03:40

編集2016/06/14 03:57
attakei

総合スコア2738

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

HTMLは取得して手元にある、という前提で良いんでしょうか?

HTMLを解析するには、BeautifulSoupというライブラリーが良く使われています。

URLを羅列するだけなら、こんな感じになります。

lang

1from bs4 import BeautifulSoup 2 3html = ''' 4<table border=1> 5 <tr><th></th><th>日付</th><th>URL</th></tr> 6 <tr><td>2016-06-13</td><td>google.com/1</td><td>B-1</td></tr> 7 <tr><td>2016-06-13</td><td>google.com/2</td><td>B-2</td></tr> 8 <tr><td>2016-06-13</td><td>google.com/3</td><td>B-3</td></tr> 9</table> 10''' 11 12soup = BeautifulSoup(html, 'lxml') 13 14for tr in soup.find_all('tr'): # すべてのtrを取得 15 if tr.td: 16 tds = tr.select('td') # trの下のtdのリストが得られる 17 print("url =", tds[1].text) 18 else: 19 print('tr has no td')
  • 実行結果
tr has no td url = google.com/1 url = google.com/2 url = google.com/3

投稿2016/06/13 15:21

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gvbatei

2016/06/14 01:36

申し訳ございません。 HTMLソースは無いです。 Slack上に流れているhttp:/の情報を取得し 日付とURLでcsvか何かで吐き出したいです。
argius

2016/06/14 01:49

urllib2などのモジュールと組み合わせればオンラインHTMLでもできます BeautifulSoupで調べてみればヒントが見つかるでしょう。 CSVも検索すれば見つかるはずです。
gvbatei

2016/06/14 02:25

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問