catch-img

NewsPicksのコメントをスクレイピングで自動取得する方法

前回のブログでは、ヤフーニュースのコメント取得方法について解説しました。今回はNewsPicksのコメントの取得方法について解説します。

NewsPicksもヤフーニュースと同様、ニュース単位でコメントをつけることができます。実名登録が多いため、自社関連のインフルエンサーを発掘する際にも役立ちますので、自社の関連記事がピックされた際はコメントも取得しておくと、マーケティング等にも活用できるかと思います。

今回もヤフーニュースのコメント取得解説と同様、下記のゴーン氏の弁護団に関するニュースを例に解説していきます。

元記事は前回同様、こちらの時事通信の記事です。

  ゴーン被告弁護団が辞任検討 「来週にも連絡取りたい」—レバノン逃走:時事ドットコム 日産自動車の前会長カルロス・ゴーン被告(65)がレバノンに逃走した事件で、弁護人の弘中惇一郎弁護士は4日、取材に応じ、弁護団が辞任を検討していることを明らかにした。来週、被告との接触を図り、被告の意向を踏まえて時期を決める。弘中弁護士は「いずれ辞任しないとしょうがない」などと語った。 時事ドットコム


Python × Seleniumでコメントを取得

Python×Seleniumでスクレイピング

今回もヤフーニュースのコメント取得と同様、こちらもPythonとスクレイピングライブラリのSeleniumを活用して、情報を取得していきたいと思います。

まずはSeleniumをインポートし、上記該当記事のURLを指定します。
NewsPicksの記事URLは https://newspicks.com/news/数字 というのが基本となります。

NewsPicks上のURLはこちら。
https://newspicks.com/news/4512249

NewsPicksの特徴①ID/PW制

ヤフーニュースはログインしなくても全コメントを閲覧できましたが、NewsPicksはログインしないとコメント全文が読めません。

スクレイピングライブラリである「Selenium」は、こうしたログインが必要なサイトのスクレイピングと相性が良いようなので、今回もSeleniumを活用していきたいと思います。

まずはSeleniumをインポートし、記事URLを設定します。

from selenium import webdriver
driver = webdriver.Chrome()

url = "https://newspicks.com/news/4512249"

ここからユーザー名とパスワードでログイン画面からログインしていきます。メールアドレスとパスワードの項目に任意の情報を記載します。

elem_btn = driver.find_element_by_class_name("read-more-with-login")
elem_btn.click()

elem_link_btn = driver.find_element_by_class_name("go-login")
elem_link_btn.click()

elem_username = driver.find_element_by_id("login-username")
elem_username.send_keys("メールアドレス")

elem_userpass = driver.find_element_by_id("login-password")
elem_userpass.send_keys("パスワード")

elem_login_btn = driver.find_element_by_class_name("form")
elem_login_btn = elem_login_btn.find_element_by_class_name("login-btn")
elem_login_btn.click()

NewsPicksの特徴②スクロールしないと全コメントページを表示できない

NewsPicksのスクレピングが難しいポイントが、画面を何度もスクロールして「他●●件のPickを表示」を表示させてクリックしないと、コメントが表示されないところです。

何度か試した結果、下記の方法でスクロールさせることでうまく抽出することができました。

#3秒の間隔を空けてページ最下部まで9回スクロール
import time
for i in range (1, 10):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(3)

#「他●●件のPickを表示」をクリック
otherpick_btn = driver.find_element_by_xpath("/html/body/div[4]/div[2]/div[2]/div/div[1]/div[5]/div[2]/div[3]/div[3]/div[1]")
otherpick_btn.click()

#さらに3秒の間隔を空けてページ最下部まで9回スクロールして、ページ全体を取得
for i in range (1, 10):
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(3)

「他●●件のPickを表示」を表示させてから、再度さらにスクロールさせるところがポイントとなるようです。

上記では1~10までの数値を繰り返し処理していますが、コメントが膨大になるようなニュースであればこの数字を増やし、スクロールの回数を増やしたほうが良いかもしれません。

ここからはヤフーニュースのスクレイピングと同様の処理となります。comment-rowという複数コメントを入れた全体のクラス要素から、ユーザー単位のクラス要素であるuser-profileをコメント分取得し、そこからコメントや名前を取得する流れになります。

comment_boxes = []
names = []
jobs = []
picktimes = []
comments = []
counts = []
user_profiles = [] 

#コメント要素をまとめて取得
comment_boxes = driver.find_elements_by_class_name("comment-row")

for comment_box in comment_boxes:
    
    user_profile = comment_box.find_element_by_class_name("user-profile")

    #nameを取得
    elem_name = user_profile.find_element_by_class_name("name")
    name = elem_name.text
    names.append(name)

    #jobを取得
    elem_job = user_profile.find_element_by_class_name("job")
    job = elem_job.text
    jobs.append(job)

    #picktimeを取得
    elem_picktime = user_profile.find_element_by_class_name("picktime")
    picktime = elem_picktime.text
    picktimes.append(picktime)

    #commentを取得
    elem_comment = comment_box.find_element_by_class_name("comment")
    comment = elem_comment.text.split("\n")
    comments.append(comment)

    #lile_countを取得
    elem_count = comment_box.find_element_by_class_name("count")
    count = elem_count.text
    counts.append(count)

上記のコードで下記100件ほどのコメントが一度に取得できました。いいね数や職業欄に記載されたデータなども取得することができます。

NewsPicksをスクレイピング

コメントをテキストマイニングすれば、コメントの傾向もつかみやすいです。

NewsPicksでは前回のネガティブコメントを多かったヤフーニュースと違い、やむを得ないというコメントを多いことが分かります。

以上、NewsPicksは実名でのコメントが多いため、インフルエンサーやキーパーソンを探すのにも役立ちます。

こうした情報はスクレイピングを使えば一括取得できるため、効率的な情報収集が可能です。ぜひご活用ください。

  ヤフーニュースのコメントをスクレイピングで自動で取得する方法 | 広報・PR支援の株式会社ガーオン プログラミングを活用してヤフーニュースのコメントを自動取得する方法を解説します。 広報・PR支援の株式会社ガーオン


  ヤフーニュースに取り上げてもらう方法 月間50億PVと言われているヤフーニュース。そのヤフーニュースはどのように作られているのでしょうか。 広報・PR支援の株式会社ガーオン


関連記事

朝日新聞の要約AIはヤフートピックスの夢を見るか~ディープラーニングを用いた令和時代のプレスリリースの作り方~

2020-02-14

朝日新聞の記事データをもとに開発されたという、ディープラーニングを活用した自動要約生成APIをご紹介します。

【広報担当者向け】複数のWEBニュースを自動キャプチャする方法【働き方改革】

2020-02-01

Pythonを使って複数のWEBニュースの掲載記事を自動キャプチャする方法を解析します。

2019年のワールドビジネスサテライトの報道傾向を分析する【WBS テレ東】

2020-01-19

2019年にワールドビジネスサテライトで放映されたニュースの傾向を見える化し、その傾向を探っていきたいと思います。

NewsPicksのコメントをスクレイピングで自動取得する方法

2020-01-15

NewsPicksのコメント欄をプログラミングで自動で取得する方法を解説します。

ヤフーニュースのコメントをスクレイピングで自動取得する方法

2020-01-06

プログラミングを活用してヤフーニュースのコメントを自動取得する方法を解説します。

1万件のヤフートピックスを分析して分かった傾向と対策

2019-07-17

1万件のヤフートピックスのデータから、傾向と対策、サイトの仕組みなどに迫ってみたいと思います。

広報・PRやプレスリリースまわりでお困りのことはございませんか?
多数の企業サポートを行ってきた当社が解決いたします。
お気軽にお問合せください。

企業情報

gaaaon