投稿日: | 最終更新日:
Beautiful Soup4でWebサイト解析
Pythonでスレイピングを行います。今回は、Beautiful Soup4を使ってWebサイトを解析します。
Beautiful Soup4でWebサイト解析
Beautiful Soupとは、HTMLの内容を解析するためのPythonライブラリです。
前回は、RequestsでWebページのデータを取得しました。今回は、HTMLを解析して現在のページから記事に関する情報を抽出します。
前提
①仮想環境、本番環境どちらでも構いませんが、CentOS7にPython3とvenvがインストールされているものとします。VPSに作った方法ですが、共通ですので以下をご参考に。
②スクレイピングに使用するPythonパッケージ(Requests、Beautiful Soup4)をインストールします。
→Pythonのウェブスクレイピング環境を作る(Requests、Beautiful Soup4)
ホスト環境
ホスト環境はUbuntuですが、WindowsでもMacでもOKです。
OS | Ubuntu 16.04.1 LTS 64bit |
---|---|
Virtualbox | 5.1 |
Vagrant | 1.9.5 |
ゲスト環境
OS | CentOS 7.1.1503 |
---|---|
Python | 3.6.1 |
pip | 9.0.1 |
Webサーバ | Apache/2.4.6 (CentOS) |
mod_wsgi | 4.5.17 |
Beautiful Soup4でサイトを取得
①venvの仮想環境から、そのままコマンドでpythonの対話モードを起動します。
python
②以下のコードを記述して実行します。RequestsオブジェクトのcontextにHTMLが入ります。そのデータを元にBeautifulSoupオブジェクトを生成します。
>>> import requests >>> from bs4 import BeautifulSoup >>> r = requests.get('https://hombre-nuevo.com/python/webscraping0002/') >>> soup = BeautifulSoup(r.content, 'html.parser')
titleタグの情報を取得します。
>>> title = soup.title
オブジェクトの型を確認します。型はTag型です。
>>> type(title) <class 'bs4.element.Tag'>
タイトルタグを表示します。
>>> print(title) <title>Beautiful Soup4でWebサイト解析 | Hornet|静岡拠点のWeb、ホームページ制作</title>
タイトルタグの内容を表示。
>>> print(title.text) Beautiful Soup4でWebサイト解析 | Hornet|静岡拠点のWeb、ホームページ制作
サイトの一件分のデータを取得
soupオブジェクトのfind()は、任意のタグの情報を取得します。id、classなどhtmlの属性とタグ情報を取得します。
>>> div = soup.find('div', class_='div_index')
class属性の場合だけPythonの予約語のclassとかぶります。classを指定する場合は「class_」と指定します。
div.find(‘li’)でdivタグの中の最初のliタグを取します。
>>> li = div.find('li')
aタグの中の文字列を表示します。
>>> print(li.a.text) Beautiful Soup4でWebサイト解析
文字列の中のsplit()で日付とタイトルに分割して、それを表示します。
>>> li.a.text.split(maxsplit=1) ['Beautiful', 'Soup4でWebサイト解析']
サイトの全データを取得
soupオブジェクトには、「find_all()」というメソッドがあります。これは、指定した条件に合致するすべてのタグを取得します。以下の例では、すべてのliタグを取得します。また取得したデータをCSV形式で出力します。
>>> div = soup.find('div', class_='readingContent01') >>> for li in div.find_all('li'): ... url = li.a['href'] ... date, text = li.a.text.split(maxsplit=1) ... print('{},{},{}'.format(date, text, url)) ...
- Python 113
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- PyCharm 7
- jQuery 7
- 機械学習 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- Google Colaboratory 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1