43
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

python初心者でもたった1時間でスクレイピングができるようになるまで(mac用)

Last updated at Posted at 2018-09-01

Pythonのスクレイピングができるライブラリは、Requestsライブラリと、Beautifl Soupライブラリがあります。
今回はより初心者向けのBeautifl Soupライブラリを使います。

事前準備

python3とpip3のインストール

python3が入っていない人は、pythonを入れておきましょう。
このコマンドでpip3も同時にインストールされます。

$ brew install python3

無事にインストールできたか確認します。


$ python3 --version
Python 3.6.5

$ pip3 --version
pip 10.0.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)

これでオーケー!!

webページを取得するためにRequestsをインストールする

先ほどのpipを使って、Requestsをインストールします。


$ pip3 install requests

ちょっとだけRequestsの使い方を勉強しました

  • ファイルの先頭でインポートする必要がある
import requests

基本的な使い方はこちらを参照ください。↓↓

Requests の使い方 (Python Library)
多分、全部書くと恐ろしく見にくい記事になってしまう。

Beautiful Soupをインストールする


$ pip3 install beautifulsoup4

pythonの開発環境を整える

XAMPPでpythonを使おうと思ったんですけど、うまくいかず。

anacondaで開発環境を整えたいと思います!

開発環境がある方は飛ばしてください。

  • anacondaインストール

anaconda公式サイト

ココからインストールできます。
先ほどpython3をインストールしたので、python3.Xの方をインストールしてください。

これはwindows向けですが、macも似たようにやるとできたので、これをもとにインストールを進めると良いと思います
科学計算向けPython環境を簡単にインストールできる「Anaconda」入門

anacondaをインストールしたら、launchpadから「anaconda navigator」っていうのがあると思うので、それを押してください。

スクリーンショット 2018-09-01 11.35.38.png

そして、jupyter notebookのところの「launch」をクリックします。すると、jupyter notebookが開きます。

スクリーンショット 2018-09-01 11.34.30.png

newから、python3を選べば、オーケー

スクリーンショット 2018-09-01 11.40.25.png

 実践してみる

Qiitaにアクセスして、適当にデータをとってみる


import requests
r = requests.get('https://qiita.com/') # Qiitaのデータをとる
r.content # データの中身を表示

結果はこれ

スクリーンショット 2018-09-01 11.45.51.png

すごいことになってるwww
なるほどね、なるほどね

Qiitaにアクセスしてhtmlのデータを取得してみる


import requests
from bs4 import BeautifulSoup

r = requests.get('https://qiita.com/') 
data = BeautifulSoup(r.text, 'html.parser')
data

スクリーンショット 2018-09-01 11.50.10.png

なるほどなるほど、

NewsPicksのホーム画面にあるニュースのタイトルを取得する

早速ですがコードはこちら


import requests
from bs4 import BeautifulSoup

r = requests.get('https://newspicks.com/') 
data = BeautifulSoup(r.text, 'html.parser')
elems = data.find_all("div", class_="title _ellipsis")
for e in elems:
 print(e.getText())

実行結果はこちら
スクリーンショット 2018-09-01 12.47.04.png

おーすげええ

html要素を特定する時に使える小技

これやったらめっちゃわかりやすくコードを書けました

手順

  1. pythonのコードと同じところに「data.html」を作る ←名前はなんでもいいですが
  2. 下記のコードを自分でアレンジして貼る(with以降がデータを上書きするコードです)
import requests
from bs4 import BeautifulSoup

r = requests.get('https://newspicks.com/') 
data = BeautifulSoup(r.text, 'html.parser') # 書き込みたいデータ
with open('data.html', mode='w', encoding = 'utf-8') as fw:
   fw.write(data.prettify()) # data.htmlに書き込みモードで「data」を整形して上書きします!

そうしたら、長いの一部だけ見せますが、こんな感じになりました

data.html
!DOCTYPE html>
<html class="anonymous">
 <head>
  <meta charset="utf-8"/>
  <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
  <meta content="width=device-width,user-scalable=no" name="viewport"/>
  <meta content="origin" name="referrer"/>
  <meta content="PF0KOWBojqnTWtUDrPqsejuE9xPUPqVEJWMdoodG5Aw" name="google-site-verification"/>
  <title>
   NewsPicks | 経済を、もっとおもしろく。
  </title>
  <link href="https://newspicks.com/favicon.ico" rel="shortcut icon"/>
  <meta content="newspicks,dow jones,news,economics,politics" name="keywords"/>
  <link href="https://newspicks.com/" rel="canonical"/>
  <link href="https://newspicks.com/np_logo.png" rel="apple-touch-icon"/>
  <link href="" rel="alternate"/>
  <meta content="「経済を、もっとおもしろく。」ビジネスパーソンや就活生必携のソーシャル経済メディア。国内外の最先端の経済ニュースを厳選。専門家や著名人の解説コメントでニュースがわかる。" name="description"/>
  <meta content="NewsPicks | 経済を、もっとおもしろく。" property="og:title"/>
  <meta content="website" property="og:type"/>
  <meta content="https://newspicks.com/" property="og:url"/>
  <meta content="NewsPicks" property="og:site_name"/>
  <meta content="「経済を、もっとおもしろく。」ビジネスパーソンや就活生必携のソーシャル経済メディア。国内外の最先端の経済ニュースを厳選。専門家や著名人の解説コメントでニュースがわかる。" property="og:description"/>
  <meta content="https://newspicks.com/ogp.png" property="og:image"/>
  <meta content="ja_JP" property="og:locale"/>
  <meta content="summary" name="twitter:card"/>
  <meta content="@NewsPicks" name="twitter:site"/>
  <meta content="@NewsPicks" name="twitter:creator"/>
  <meta content="NewsPicks | 経済を、もっとおもしろく。" name="twitter:title"/>
  <meta content="「経済を、もっとおもしろく。」ビジネスパーソンや就活生必携のソーシャル経済メディア。国内外の最先端の経済ニュースを厳選。専門家や著名人の解説コメントでニュースがわかる。" name="twitter:description"/>
  <meta content="https://newspicks.com/ogp.png" name="twitter:image"/>
  <meta content="JP" name="twitter:app:country"/>
<!-- まだまだ下に続きますが、省略します -->

すげええええ
簡単にできたーーー

参考ウェブサイト

初心者向けにPythonでWebスクレイピングをする方法をまとめる

Requests の使い方 (Python Library)

anaconda公式サイト

科学計算向けPython環境を簡単にインストールできる「Anaconda」入門

43
52
0

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
43
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?