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支援の株式会社ガーオン


関連記事

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