一端の何かになれるか

一生懸命は眩しい

BeautifulSoupでスクレイピングを試す python

とにかく試して見るシリーズ第4弾。
今はあまり時間をかけられない+業務上必要なわけでもなく必要になりそうもないので、とりあえず触りだけ。

なぜやるのか

pythonでできそうなことは試しておきたい。
それから、ようやくWeb系のデータに触れて行く機会を得られそうなため、サクッと初歩の初歩だけ試してみる。

ウェブスクレイピングとは

ものすごく端的に言って、Webサイトから欲しい情報だけを抽出する手法。
下記のサイトを参考に進めました。

ウェブスクレイピングについて

http://www.fascinatedwithtofu.com/2017/01/08/scraping1/ https://blog.codecamp.jp/webscraping

requestによるHTTP通信について

http://www.yoheim.net/blog.php?q=20170802

www.yoheim.net

Webスクレイピングの知見が詰まったブログ記事

http://vaaaaaanquish.hatenablog.com/entry/2017/06/25/202924#requests

vaaaaaanquish.hatenablog.com

request + BeautifulSoupによるスクレイピング

qiita.com

https://qiita.com/Atupon0302/items/352811a2d92d6ebab8c2

ビジネスでの活用例

金融

iritec.jp

不動産

miyazawataichi.hatenablog.com

旅行

travelocook.hatenablog.com

 本来個人に属する情報を、まとめて提供しているだけの金融の事例は好感を持てる(てっきり全てAPIだと勘違いしていたが...私もヘビーユーザである。)
不動産の記事でも指摘してあるが、その他の事例はちょっと、、個人が倫理観を持って使うなり、企業が戦略を立てるために情報収集に使うには良い技術だと思うけど、スクレイピングで得た情報がそのままビジネスとして再提供されてしまうのはなんとも腑に落ちない。
 例えるなら、真面目に講義に出た学生から情報引っこ抜く講義に出ない不真面目な学生みたいな...こう言う学習記録系の記事も、スクレイピングしてサクッと書き始めたら倫理的にアレだな。

試してみること

今回は、プロ野球ニュースのタイトル一覧をsportsnaviから取得してみる

# requestsのインポート
import requests
# Webページを取得
r = requests.get('https://sports.yahoo.co.jp/news/list?id=npb')
# レスポンスのステータスコードを確認
print(r.status_code)
200

レスポンスステータスコードの一覧

[https://developer.mozilla.org/ja/docs/Web/HTTP/Status:title]

# BeautifulSoupで要素を抽出
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, "lxml")
soup
    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <title>ニュース一覧 - スポーツナビ</title>
    <meta charset="utf-8"/>
    <meta content="telephone=no" name="format-detection"/>
    <meta content="スポーツ総合サイト、スポーツナビのニュース一覧。野球、サッカー、競馬をはじめ、最新のスポーツニュースを掲載しています。" name="description"/>
以下、略
# 記事のタイトルだけを抜き取る
import re
elems = soup.find_all('a', class_='linkMain')
for e in elems:
    print(e.getText())
<プロ野球CS>4安打3打点も悔しそう 阪神・大山
阪神-DeNA、悪天候でも強行開催した理由とは
<プロ野球CS>「勝ちたい気持ちだけ」DeNA・筒香
甲子園、砂3袋をグラウンドに=プロ野球CS
阪神糸原3カ月ぶり安打 右膝靱帯損傷から復活
阪神桑原6失点「やられただけ」中継ぎ陣機能せず
阪神金本監督「考えることが多くて」継投策が裏目に
乙坂、ここぞで3ラン=プロ野球CS・DeNA
<プロ野球CS>「勝利の方程式」雨中でほころび 阪神
<プロ野球CS>待ち望んだ舞台で大仕事 DeNA・乙坂
【阪神】雨中の闘いで大敗、金本監督「選手は気の毒」
中日又吉が秋季練習初ブルペン「全然ダメだった」
乱調にも言い訳せず=プロ野球CS・阪神
雨の甲子園で強行開催…杵渕セ統括「CSという試合の性質も考えて判断」
DeNA打線、本領発揮=21安打猛攻で勢い-プロ野球セCS
<プロ野球CS>「一回から全開」楽天・岸、久しぶりの白星
阪神・金本監督、雨中の逆転負けに悔いも「通常ならば中止…選手が気の毒」
阪神・金本監督、雨天強行開催は「選手が気の毒。ほんと申し訳ない」
<プロ野球CS>西武、元チームメートに脱帽
DeNA、楽天が雪辱しともに1勝…CS第2戦

感想

  • htmlもcssもよく知らないので、まずそっからキャッチアップしないとスクレイピングは無理
  • クローリングできるようになるにはもっとスクリプトかけるようにならないと...
  • 情報の収集、比較、保存の効率化にめちゃくちゃ寄与しそうなので、使えそうな場面があれば、苦労を伴ってもコード書いていきたい