こんにちは
ふと
cd desktop/python
をして
ls
したところ、3分クッキング的にできるスクレイピングがあったので記事にしようと思います。
最初に
「ではこちらが環境設定のできているPCになります〜〜」なんてアシスタントの人が持ってきてくれるわけでもないので環境設定からやりましょう。
ちなみに僕の環境はmacOS Catalina10.15です、不具合だらけで最近よくいろんなアプリが落ちます。
あ、Python3は入ってる前提でお願いします。
今回用意するモジュールは
BeautifulSoup
とrequests
です
どちらも入っていない人はpip3 install 〇〇
でインストールしてください。
これでとりあえず材料が揃った感じです。
ここまでで3分経ってそうですね、頑張っていきましょう。
次に
ターミナルを開いてcd destkop
(ここは自分が保存したい場所でいいです)をして保存先を決めましょう。オススメはデスクトップにPython
というファイルを作ることです。
そうしたらvim news.py
としてPythonファイルを作ります。ここは趣味でvimを使っているだけなのでAtomとかVSCodeでOKです。
vimはいいぞ。
今回はYahoo newsからスクレイピングしてくるので
https://news.yahoo.co.jp/
をurlとして使います。
このアクセスランキングの場所を表示します、楽しくなってきましたね。
この写真で選択されているyjnSub_list
をスクレイピングします。
Chromeでデベロッパーツールを開いてのぞいてみて下さい。
コード
まずはモジュールをimportしないと話にならないのでチャチャッと入れます
import requests
import bs4
そしたらurlとかsoupとかにいい感じに代入してあげて関数作ってprintすれば完成です。
簡単ですね。
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 〇〇
とかして再度インストールしてみてください。
お疲れ様でした。