あなたに次の選択肢を用意するサイト
Thoth Coworker
~ プログラミングの次++ ~
For
新社会人 / 新学生 / 新院生 / 新研究者
カテゴリ
Pythonでスクレイピングを試す
Facebookシェア Twitterツイート LINEで送る
P
ポイント
Pythonでスクレイピングを試す
Pythonで簡単にスクレイピングを試してみるための記事
  • Point 1
    Pythonでスクレイピング
    Pythonで適当なサイトを読み出して処理する方法をお手軽に試してみます.文字列の取得、セレクタにより要素の絞り込みなどを実践します.
  • Point 2
    BeautifulSoupを使う
    よく使われるBeautifulSoupによるスクレイピングを行います.
  • Point 3
    タグやClassで抽出
    BeautifulSoupを使って、タグやClassによる抽出を行います.
P
ステップ概要
Pythonでスクレイピングを試す
一番初めはBeautifulSoupとrequestsのインストールから
はじめに最も基本的なdivやaタグを抽出してみます.
URLを抽出したいときなどの方法を試してみます.
CSSのセレクタと同様な抽出を試してみます.
Step
1
BeautifulSoupをインストール
まずPythonでBeautifulSoup4を使う準備を行います.
またサイトから情報を取得するためのrequestsもinstallしておきます.
Bash : BeautifulSoup4のインストール
    
pip install beautifulsoup4
    
  
Bash : requestsのインストール
    
pip install requests
    
  
requestsはサイトの内容を取得するためのパッケージとして、BeautifulSoup4はHTMLを解析するためにインストールしました.
Step
2
divタグやaタグを抽出してみる
それでは早速実際にページを取得してみます.
URLは適宜それぞれの値に変更してください.いつも通りシンプルなコードになるように調整しています.

Python : ページからdivタグやaタグを抽出してみる
    
#!/usr/bin/env python3

import requests
from bs4 import BeautifulSoup

#URLを変えてください.
URL = "xxxxxxxxx.xxxx/xxxx";

#ここでURLのコンテンツを取得
res = requests.get(URL)
#中身を表示してみます
print(res.text)

soup = BeautifulSoup(res.text, 'html.parser')

#divタグやaタグの中身を表示
print([t.get_text() for t in soup.find_all("div")])
print([t.get_text() for t in soup.find_all("a")])
    
  
前半はrequestしたURLの中身を表示しており、後半はfind_all関数を用いてdivタグやaタグの中身を取得しています.
Step
3
hrefの有無で抽出してみる
次にhrefの中身を取得します.
はじめにaタグを全て抽出してそのhrefの中身を表示します.
Python : hrefの中身を抽出する
    
#!/usr/bin/env python3

import requests
from bs4 import BeautifulSoup

#URLを変えてください
URL = "xxxxxxxxx.xxxx/xxxx";
res = requests.get(URL)

soup = BeautifulSoup(res.text, 'html.parser')
print([a.get("href") for a in soup.find_all('a')])
    
  
get関数を使えばattributeの中身を取り出します.
Step
4
CSSのセレクタと同じように抽出してみる
最後にClassを使って絞り込みを行います.
Python : hrefの中身を抽出する
    
#!/usr/bin/env python3

import requests
from bs4 import BeautifulSoup

#URLを変えてください
URL = "xxxxxxxxx.xxxx/xxxx";
res = requests.get(URL)

soup = BeautifulSoup(res.text, 'html.parser')
print([print(a.get_text()) for a in soup.select('.book')])
    
  
.bookのクラスを取得しています.
Done