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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

708閲覧

ニコニコ生放送でコミュニティのフォローを自動化させたい

ai333

総合スコア9

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2018/07/04 09:12

ニコニコ生放送で、コミュニティフォローを自動化させたい。
ニコニコ生放送でアカウントをもう一つ作りたいと考えており、今登録しているコミュニティをそのまま移行したいが、241件もフォローしているものがあり、手作業でフォローするのは大変なため。

###取り組んだ事

実際にフォローする際にどのようなパラメーターをPOSTしているのか確認するために、Chrome Developper toolsで確認しました。

また、ニコニコ生放送で特定のコミュニティをフォローする際のURLは以下のようなものです。
https://com.nicovideo.jp/motion/co2451008

後ろのco*******がコミュニティの番号となっています。

そこでDevelopper toolsを利用して得られた情報を元に、Pythonで自動化するプログラムを作成しました。

Python

1import requests 2follow_url = 'https://com.nicovideo.jp/motion/co2451008' 3session_id = dict(user_session='(ここにCookie情報の中にあるuser_sessionをおく、EditThisCookieなどのChrome拡張で取得)') 4 5session = requests.session() 6 7follow_params = {'mode':'commit','title': 'フォローリクエスト','comment':'','notify':''} 8header = {'Referer': 'https://com.nicovideo.jp/motion/co2451008','User-Agent': 'Mozilla/5.0','Host': 'com.nicovideo.jp','Origin': 'https://com.nicovideo.jp','Host': 'com.nicovideo.jp'} 9session.post(follow_url,data=follow_params, headers=header) 10

このスクリプトを実行してもフォローできないです。

最終的には、Pythonを通してコミュニティをフォローすることの自動化を目指しております。
どうぞよろしくお願い致します。

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

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

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

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

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

x_x

2018/07/04 09:28

もう一つ同じようなアカウントを作る理由は何でしょうか? 241件となると両方とも課金しなければならない気がします
ai333

2018/07/04 09:46

プレミアムメンバーではないアカウントでは、100件がフォローできる上限であるため両方のアカウントをプレミアムアカウントにします。理由は、ニコニコ生放送を視聴する環境が異なっている為です。どちらも個人で使用するには変わりないのですが、他人に見られる可能性があるため、自宅で1つ、自宅外で1つアカウントを持ちたいと考えております。
guest

回答2

0

ベストアンサー

pythonではないですが、特別なことしなくてもフォローできることを確認。
リファラ指定してないとダメみたいですが

> POST /motion/co..... HTTP/1.1 Host: com.nicovideo.jp Accept: */* Accept-Language: ja;q=1, en;q=0.9, fr;q=0.8, de;q=0.7, zh-Hans;q=0.6, zh-Hant;q=0.5 User-Agent: GuzzleHttp/6.3.3 curl/7.54.0 PHP/7.1.5 Content-Type: application/x-www-form-urlencoded Referer: https://com.nicovideo.jp/motion/co.... Cookie: user_session=....; user_session_secure=....; nicosid=.... Content-Length: 116
<?php require './vendor/autoload.php'; $username = ''; $password = ''; $communityNumber = 'co000000'; $url = 'https://com.nicovideo.jp/motion/'.$communityNumber; $client = new \GuzzleHttp\Client( [ 'cookies' => true, 'debug'=>true, 'headers' => [ 'Accept' => '*/*', 'Accept-Language' => 'ja;q=1, en;q=0.9, fr;q=0.8, de;q=0.7, zh-Hans;q=0.6, zh-Hant;q=0.5', ] ]); $client->request('POST','https://account.nicovideo.jp/api/v1/login',[ 'form_params'=>[ 'mail_tel'=>$username, 'password'=>$password ] ]); $client->request('POST',$url,[ 'headers'=>[ 'Referer'=>$url, ], 'form_params'=>[ 'mode'=>'commit', 'title'=>'フォローリクエスト', 'comment'=>'', 'notify'=>'' ] ]);

投稿2018/07/04 18:01

39ff

総合スコア284

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

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

0

apiを使うのが1番簡単ですが、seleniumを使うのが1番直感的です。

https://qiita.com/motoki1990/items/a59a09c5966ce52128be

人がブラウザを操作する順番でコードを書けばよいので。

投稿2018/07/04 11:18

mkgrei

総合スコア8560

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

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

ai333

2018/07/04 13:08

Seleniumの紹介ありがとうございます。ブラウザの挙動を真似することにとらわれて見落としていました。Seleniumを使えば実現できますが、上に書いたブラウザの挙動を真似る方法で2時間以上時間を費やしていた為、このコードをどのように改善すれば実現できるのか改善方法をご教授願えたらと思います。
mkgrei

2018/07/04 14:30

まずチェックすべきはセッションがちゃんと確立しているかです。 いきなりPOSTをするのではなく、GETすることはできていますか?
ai333

2018/07/04 15:14

セッションは確立されており、ログインした際に表示される個別のデータなどを取得できることは確認しております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問