HTML

HTML (HyperText Markup Language) は名前こそとっつきづらいですが、知ってしまえばそこまで難しいものではありません。 HTML は IE, Firefox, GoogleChrome など、ブラウザ上に文書を表示するためのマークアップ言語です。 そもそも、マークアップ言語とはなんでしょう。

例えば、HTMLでは <b>太字</b> の表示はこのように書きます。

この文を html として保存して、ブラウザで表示すると、次のように表示されるはずです。

例えば、HTMLでは 太字 の表示はこのように書きます。

<b> に囲まれている文字が太字になりました。 <b>タグ といいます。 タグは、ブラウザが HTML を表示するときに、どこを太字にするか、大文字にするか、斜体にするかを教える目印になります。 マークアップ言語とは、このようにタグを使って文書の表示を操作する言語です。

注釈

ちなみに、理論経済学者のほとんどが使っていると言われている、TeX 言語もマークアップ言語の一つです。 TeX のマクロパッケージ、LaTeXでは \textbf{} で文字を囲みます。 ここでは、\textbf{} がタグになります。

タグに囲まれているものを要素の内容と呼びます。 タグの始まりを 開始タグ と呼び、タグの終わりを 終了タグ と呼びます。 終了タグは、<b> ではなく、</b> であることに注意してください。

タグに含まれている、b要素 と呼びます。 最初に紹介したのは、内容を太字にする、b 要素です。 HTML にはその他にも様々な要素があります。

ドキュメントツリー

HTML には様々な要素があり、ほとんどの HTML 文書は要素が入れ子になっています。 要素の入れ子構造の全体を表したのが、ドキュメントツリーで、例えば次のようなものです。

blockdiag html head body div ol li

html 要素は、全ての要素の最上位に位置するものです。 その下に位置するのは、head 要素と body 要素です。 head 要素はブラウザ上には表示されません。 文字コードや検索のためのキーワードなどをここに記述します。 私たちがブラウザ上で見る文書は、body 要素の中に含まれています。

入れ子になっている要素間を 親子関係、入れ子の階層が同じ要素間を 兄弟関係 と呼びます。 例えば、上の図では、ol 要素と li 要素は親子関係、div 要素と ol 要素は兄弟関係です。

要素の順番

要素は大別して ブロック レベルと インライン レベルの要素に分かれます。 ブロックレベルの要素はインラインレベルの要素を入れ子にできますが、その逆はできません。

ある要素がブロックレベルかインラインレベルかは、文をタグで囲うと改行されるかで見分けられます。 改行されるならば、要素はブロックレベル、改行されないならば、要素はインラインレベルです。

基本的な要素を以下に紹介します。

ブロックレベルの要素

h 要素

h1h6 要素は、見出しを表示します。

<h1>H1</h1> <h2>H2</h2> <h3>H3</h3> <h4>H4</h4> <h5>H5</h5> <h6>H6</h6>

H1

H2

H3

H4

H5
H6

p 要素

p 要素は段落を示します。

段落1<p>段落2</p>
段落1

段落2

table 要素

table 要素は表を表示します。 th 要素で列、tr 要素で行、td でセルを表します。

<table border=1>
  <th>列1</th><th>列2</th>
  <tr>
    <td>要素11</td> <td>要素12</td>
  </tr>
  <tr>
    <td>要素21</td> <td>要素22</td>
  </tr>
</table>
列1列2
要素11 要素12
要素21 要素22

ul 要素

ul 要素は順不同箇条リストを表示します。 li 要素はそのアイテムを表示します。

<ul>
  <li>hoge</li>
  <li>fuga</li>
</ul>
  • hoge
  • fuga

ol 要素

ol 要素は順序付き箇条リストを表示します。 li 要素はそのアイテムを表示します。

<ol>
  <li>hoge</li>
  <li>fuge</li>
</ol>
  1. hoge
  2. fuge

dl 要素

dl 要素は記述リストを表示します。 dt 要素は項目、dd 要素は項目内容を表示します。

<dl>
  <dt>first</dt>
   <dd>1番</dd>
  <dt>second</dt>
   <dd>2番</dd>
</dl>
first
1番
second
2番

div 要素

div 要素は文をグループ化します。

<div>ここはグループ</div>ここは違う
ここはグループ
ここは違う

インラインレベルの要素

a 要素

a 要素はハイパーリンクを付けます。

<a href='https://google.co.jp'>Google</a>
Google

img 要素

img 要素は画像を表示します。

<img src="_images/python-logo-master-v3-TM.png" width="30%" height="30%">
../_images/python-logo-master-v3-TM.png

span 要素

span 要素は文をグループ化します。

<span>ここはグループ</span>ここは違う
ここはグループここは違う

入力フォーム

input 要素

input 要素は様々な入力フィールドを表示します。 入力フィールドは type で選びます。 value でチェックボックスや、ラジオボタンを押したときにどの値をデータとして送信するかを決めます。 name で送信したデータがどの input 要素によるものかを識別します。

テキスト

text はテキスト入力フィールドを表示します。 size で入力フィールドの大きさ、 maxlength で最大入力文字数を決めます。

<input name="text" type="text" size="30" maxlength="20">

チェックボックス

checkbox はチェックボックスを表示します。

<input name="checkbox" type="checkbox" value="check">チェックする</input>
チェックする

ラジオボタン

radio はラジオボタンを作ります。

<input type="radio" name="fruits" value="banana">バナナ
<input type="radio" name="fruits" value="orange">オレンジ
</input>
バナナ オレンジ

送信ボタン

submit は送信ボタンを作ります。

<input name="submit" type="submit" value="送信"></input>

セレクトボックス

select 要素はセレクトボックスを作ります。 各アイテムは option で囲みます。 value で送るデータの値を指定します。

<select name="country">
<option value="japan">日本</option>
<option value="america">アメリカ</option>
</select>

フォーム 要素

input 要素や select 要素はフォームの部品です。 次のようにすることで、データを送信することができます。

<form action='Webサイトの構成要素.html' method="post">
</p>好きなフルーツは?<p>
<input type="radio" name="fruits" value="banana">バナナ
<input type="radio" name="fruits" value="orange">オレンジ
<p>
<input type="submit" value="送信"></input>
</p>
</form>

好きなフルーツは?

バナナ オレンジ

CSS

これで、基礎的な HTML の書き方は分かったと思います。 それでは、以下の HTML の文を Web ブラウザで見てみましょう。

<h1>HTML の例</h1>
こんにちは!
<p>この文章は HTML で書きました!</p>
<p>この講習会の目的は Python で Web スクレイピングをできるようになることです。</p>
<p>以下が Python のサイトです。</p>
<a href='https://www.python.org/'>Python</a>

上の文は このページ のように表示されるはずです。

デザインのセンスが全く感じられないでしょう。 普段見ている Web ページでは、文章が左端に固まっていないし、もう少し行間も適切です。 色もついてますね。

HTML は Web ページのデザインを担当していません。 この役割を担っているのは、CSS (Cascading Style Sheets) と呼ばれるものです。 HTML 文書内で CSS を使う場合、style 要素を用います。 HTML のどの要素の内容を装飾するかを セレクタ というもので指定します。 Web スクレイピングをする際にも、この セレクタ を用いて、取ってくる内容を指定します。 セレクタの後の {} で装飾内容を指定します。 例えば、 以下の例は h1 要素の内容を赤色に変更しています。

<style>
  h1{color:rgb(255,0,0)}
</style>
<h1>HTML</h1>

HTML

注釈

この例では CSS の内容を html 文書内に書いてますが、普通は CSS の内容を別ファイルに css として保存し、head 内で読み込みます。 こうすることで、他のページでも使いまわすことができます。

id, class

先の例では要素を指定すればうまくいきました。 それでは、次の例はどうでしょうか。ここでは、果物(リンゴ、バナナ、スイカ)のみの色を変えたいとします。 しかし、先ほどのように、p 要素を指定してしまうと、牛肉の色も変わってしまいます。

<style>
  p{color:#ff00ff}
</style>
<p>リンゴ</p>
<p>バナナ</p>
<p>牛肉</p>
<p>スイカ</p>

リンゴ

バナナ

牛肉

スイカ

こうした場合、あらかじめ HTML で果物のグループを作成しておけば、この問題は解決します。 class="クラス名" をタグ内に記入することによって、グループを作成します。 リンゴ、バナナ、スイカのタグ内に、fruits というクラス名を付けましょう。

CSS で class を指定する場合、セレクタは .クラス名 とします。 この例の場合は、.fruits です。

<style>
  .fruits{color:#008080}
</style>
<p class="fruits">リンゴ</p>
<p class="fruits">バナナ</p>
<p>牛肉</p>
<p class="fruits">スイカ</p>

リンゴ

バナナ

牛肉

スイカ

上手くいきました! さて、次にリンゴのみを赤にしたい場合はどうでしょうか。 ここでは id を使ってみましょう。 id="id名" をタグ内に記入することによって、要素に id 名を割り振ることができます。 リンゴのタグ内に apple という id 名を付けてみましょう。

CSS で id を指定する場合、セレクタは #id名 とします。この例の場合は、#apple です。

注釈

classid はどちらも要素に名前を付けることは一緒ですが、違うところもあります。 class は複数の要素に同じクラス名を使えますが、id は複数の要素が同じ id を持つことはできません。 また、CSS で classid で同じ要素を指定した場合、id で指定した内容が実行されます。

<style>
  .fruits{color:#008080}
  #id{color:rgb(255,0,0)}
</style>
<p class="fruits" id="apple">リンゴ</p>
<p class="fruits">バナナ</p>
<p>牛肉</p>
<p class="fruits">スイカ</p>

リンゴ

バナナ

牛肉

スイカ

セレクタをうまく使えば、思い通りに要素を指定することができます。基本的なセレクタの使い方をみてみましょう。

結合子

結合子を使うことによって、要素の子孫、兄弟関係にある要素を指定できます。

E F (子孫セレクタ)

E 要素の子孫の全ての F 要素

次の例は、p 要素の子孫の span 要素を指定しています。 一方、p 要素の子孫ではない span 要素は指定されません。

<style>
  p span{color:#008080}
</style>
<p>果物
  <span>リンゴ</span>
  <span>メロン</span>
  <span>みかん</span>
</p>
<span>牛肉</span>

果物 リンゴ メロン みかん

牛肉

E>F (子セレクタ)

E 要素の子の F 要素

次の例は、p 要素の子の span 要素を指定しています。 p 要素の孫の span は指定されません。

<style>
  p>span{color:#008080}
</style>
<p>果物
  <span>リンゴ</span>
  <div>
    <span>メロン</span>
  </div>
</p>

果物 リンゴ

メロン

E,F (複数セレクタ)

, で区切ると、複数の要素を指定できます。 次の例は fruits クラスと meat 要素を指定します。

<style>
  .fruits,.meat{color:#008080}
</style>
<p class="fruits">果物</p>
<span class="meat">牛肉</span>

果物

牛肉

まだまだ説明できていない様々なセレクタがあります。 HTML クイックリファレンス はセレクタを網羅しているので、参照してみるとよいでしょう。