Make.

Web(HTML)から情報を抽出する

Pocket

Pythonで、取得したWebページ(HTML)から情報を抽出します。
これにより、HTMLから必要な情報のみを抽出し、使うことができます。
Web(HTML)から情報抽出には、lxmlを使用します。


lxmlのインストール

lxmlインストールする前に、環境を整えます。

$ sudo apt-get install libxml2-dev libxslt-dev python-dev

lxmlのインストールには、pipを使用します。
以下のコマンドを実行するだけです。

$ sudo pip install lxml

lxmlのサンプルプログラム

requestsでWeb(HTML)を取得してから,lxmlを使用して情報を抽出します。
lxml.html.fromstringでrootを作成します。rootは、HTMLElementクラスのインスタンスです。 rootを作成することができたら、プログラムで操作し、必要な情報だけを抽出します。

HTMLからテキストを抽出するサンプルは以下になります。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import lxml.html

URL = "http://make.bcde.jp/category/1/"

#Webページ(HTML)の取得
req = requests.get(URL)
root = lxml.html.fromstring(req.text)

#<a href=""></a>によるリンクを抽出する
anchors = root.xpath('//a')
for anchor in anchors:
    print anchor.attrib['href']

#h1の中身を抽出する
h1s = root.xpath('//h1')
for h1 in h1s:
    print h1.text

#idを指定して、タグに直接囲われたテキストを抽出
content1 = root.get_element_by_id('content1').text
print content1

#idを指定して、タグの中のテキストをすべて抽出
content = root.get_element_by_id('content').text_content()
print content
Pocket