Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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」入門

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away