LoginSignup
3
5

More than 3 years have passed since last update.

PythonでYahoo!ニュースのタイトルと配信日時を取得する

Last updated at Posted at 2019-11-07

こんにちは

ふと
cd desktop/python
をして
ls
したところ、3分クッキング的にできるスクレイピングがあったので記事にしようと思います。

最初に

「ではこちらが環境設定のできているPCになります〜〜」なんてアシスタントの人が持ってきてくれるわけでもないので環境設定からやりましょう。

ちなみに僕の環境はmacOS Catalina10.15です、不具合だらけで最近よくいろんなアプリが落ちます。

あ、Python3は入ってる前提でお願いします。

今回用意するモジュールは
BeautifulSouprequestsです
どちらも入っていない人はpip3 install 〇〇でインストールしてください。
これでとりあえず材料が揃った感じです。
ここまでで3分経ってそうですね、頑張っていきましょう。

次に

ターミナルを開いてcd destkop(ここは自分が保存したい場所でいいです)をして保存先を決めましょう。オススメはデスクトップにPythonというファイルを作ることです。

そうしたらvim news.pyとしてPythonファイルを作ります。ここは趣味でvimを使っているだけなのでAtomとかVSCodeでOKです。

vimはいいぞ。

今回はYahoo newsからスクレイピングしてくるので
https://news.yahoo.co.jp/をurlとして使います。

スクリーンショット 2019-11-07 15.29.55.png
このアクセスランキングの場所を表示します、楽しくなってきましたね。

スクリーンショット 2019-11-07 15.39.34.png
この写真で選択されているyjnSub_listをスクレイピングします。
Chromeでデベロッパーツールを開いてのぞいてみて下さい。

コード

まずはモジュールをimportしないと話にならないのでチャチャッと入れます

news.py
import requests
import bs4

そしたらurlとかsoupとかにいい感じに代入してあげて関数作ってprintすれば完成です。
簡単ですね。

news.py
url = 'https://news.yahoo.co.jp'
html = requests.get(url)
soup = bs4.BeautifulSoup(html.text, 'html.parser')
lank = soup.find('ol',class_='yjnSub_list')
urls = list(map(lambda l:l.find('a').get('href'), lank))

def get_title(url):
    html = requests.get(url)
    soup = bs4.BeautifulSoup(html.text, 'html.parser')
    return soup.find('div',class_='hd').text

titles = list(map(get_title, urls))
print('title'.join(titles))

最後のprint('title')のtitleは適当に書き換えても大丈夫です。

コードがかけたらターミナルで
python3 news.pyと入力しましょう。
エラーもなくニュースと配信日時が取得できるはずです。

moduleエラーを吐かれてしまったら最初の環境設定に戻ってpip3 uninistall 〇〇とかして再度インストールしてみてください。

お疲れ様でした。

3
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5