暇人の研究室

金融工学やR言語・統計学について書いてます。

<

python入門その7 ~ 関数

 

def文で関数を作成する

 

pythonには、print()やinput()だけではなく自分で関数を作る機能が存在します。

 

>>> def hello():

print('thanks!')

 

 

最初のdefで始まる文がHelloという関数を定義するものです。そしてdef文の後に続くコードである print(’ ')の部分が関数の中身となります。

 

そして、今回はhello()という関数を定義したのでhello()とpythonの画面に打ち込むと中のコードが実行されます。

 

>>> hello()
thanks!

 

このように関数を定義するのは作業において同じコードが出てくる場合一々コピペして張り付けるのではなく、関数として定義することで作業の効率化・自動化できるようにするのが目的となります。

 

パラメーター持ちのdef文

 

関数でprint()などを使う時は、()の値、つまり引数もそのまま引き渡します。

パラメーターとは関数が呼び出されたときに引数が格納される変数のことを指します。

 

このプログラムだと関数hello()にblogというパラメーターが付いていることになります。

 

改めてまとめると最初の関数hello()が呼び出されるときの引数がHIMAJINです。

 

そして、プログラムが実行されこの関数が入ると変数「blog」が「Himajin」とされ、それがprint()に渡されます。

 

 

戻り値とReturn()

 

戻り値とは関数の呼び出しによって得られた値のことを指します

 

例えば関数len()を呼び出して、Himajinのような引数を渡すとlenは文字数を返す関数ですので7という値を返してきます。これが戻り値に当たります。

 

そして、defを用いて関数を定義するときはreturn文を用いて戻り値を設定することができます。

 

このreturnを使うと、もしこれがこうだったらこう返すみたいな指定が可能になります。

 

NONE値

 

「 None」とは値がないという値をのことを指します。

 

これはPythonでの表現で、ほかのプログラミング言語でいうNULLとかに当たるものです。

 

「値がないということを表す値」のNoneは変数と本当の値を区別するのに使います。

 

Pythonだとreturn文のない関数設定の場合は終わりに「Return None」と書いておくことが一般的です。(return文に値がなくてもNoneと返します。)

 

キーワード引数とprint関数

 

 キーワード引数とは、キーワードを指定することによって引数にオプション設定を追加する引数です。

 

例えば、print()なら「end」や「seq」といった引数に追加設定ができるキーワード引数が存在します。

 

他にもPythonであらかじめ設定されているものではなく、自分でキーワード引数を作ることも可能ですが、ちょっと知識が必要になってきます。

 

ローカルスコープとグローバルスコープ

 

基本的に変数はスコープという場所に格納されます。

 

そして、関数の呼び出しの時に設定されるパラメーターと変数はローカルスコープというところの存在しており、これをローカル変数といいます。

 

対して関数の外で代入された変数はグローバルスコープというところに存在しており、これをグローバル変数といいます。

 

 グローバルスコープのコードはローカル変数を使うことはできませがローカルスコープからグローバル変数にアクセスすることはできます。

 

例外処理

 

プログラミングでは、基本エラーが起こると強制終了となりますがいちいち再起動していると面倒なのでエラーが起こった場合はこうこうこうして処理して作業を続けられるようにexceptとtryであらかじめ設定することができます。

 

終わり

 

関数とはコードを作成する上において超基本となるので必須です。

最初は分かりにくいと思いますが慣れればなんとかなります。

 

 

 

 

 

python入門その2~プログラムと関数

 

 

コメントを使う

 

自分でプログラムを組んだ時、コードをテストしたいときに一時的に他のコードを無効にしたり、作ったコードに使い方のメモをのせたいときは「#」を使います。

 

行の先頭に「#」をつけることで、それ以降のコードや文字はプログラムを動かす上で無視されます。

 

これはpythonだけではなく他のプログラミング言語でもほぼ共通の仕様です。

 

print関数

 

print関数とは、print()で()内に入力した文字や数字を画面に表示することできます。

 

もしprint('HELLO WORLD!!')と入力した場合は「HELLO WORLD!!と表示しろ」という命令を意味します。

 

>>> print('HELLO WORLD!!')
HELLO WORLD!!

 

 pythonがこの命令を実行するという事は、pythonがprint関数を呼び出し文字列の値が関数に渡されるという事を意味します。

 

この関数に渡される値を一般的に「引数」といいます。

 

input関数

 

input関数は、説明しづらいのですが簡単にいうと私たちユーザーがIDLE画面に何らかの文字や数字を入力してEnterキーを押すのを待つ関数です。

 

この関数を入力するとユーザーが入力した文字や数値を返します。↓の例だとhimajinという変数に次に入力した文字列が反映されます。

 

>>> himajin=input()
tk


>>> himajin
'tk'
>>>

 

この場合、私がhimajinと入力するとtkと返ってきます。

 

print関数の応用

 

今、print('I want to be '+himajin)という関数があった場合、前の行でhimajin=tkという式が保存されていれば↓のような結果になります。

 

>>> print('I want to be '+himajin)
I want to be tk

 

この場合だとinput関数の行での処理がprint関数に渡されて画面に表示されたという事になります。

 

len関数

 

 len関数は文字列の値を渡すと文字列に含まれる文字数を返してくれる関数です。

 

>>> len('himajin')
7

 

 文字列と数列組み合わせる

 

print関数で文字列と数列を+で合体させようとすると↓のようなエラーが出ます。

>>> print('I'+'want to'+5000)
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
print('I'+'want to'+5000)
TypeError: must be str, not int

 

これは+演算子が「文字列+文字列」と「数列+数列」の場合にしか使えないからです。(「数列+文字列」はpythonにおいて文法違反ということです。)

 

もし5000のような整数と文字列を合体させたい場合は「str()」という渡された値を文字列に変換する関数を使います。

 

 >>> print(' I '+'want to '+str(5000))
I want to 5000

 

str() ⇨ 渡された値を文字列に変換する

int() ⇨ 渡された値を整数に変換する

float() ⇨ 渡された値を浮動小数点に変換する

 

 

python入門その1~文字入力・演算子・変数の格納と代入

 

 

 

⇨Python(パイソン)のダウンロードとインストール方法 - 暇人の研究室

 

 

インストールが終わったらpythonの作業環境であるidleを起動します。

 

f:id:oruka199665:20170831184508j:plain

 

文字をidleのインタラクティブシェルに入力する

 

 pythonのコードは、>>>のところから記述することが可能です。

 

まず簡単な計算として 1+1 をやってみます。

 

>>> 1+1
4

 

 

この1や2といったものをといい、この計算で使われる+や-を演算子といいます。

 

演算子の種類

足し算 +

引き算 -

割り算 /

掛け算 *

 

データ型の種類

式は値と演算子の組み合わせで必ず一つの値に収束します。そして値のカテゴリーをデータ型といい、どんな値でもなんらかのデータ型に属しています。

 

-1 0 1 2などは整数(int)、-0.1や0.5などは浮動小数点(float)aやbを文字列(str)と言います。

 

ちなみに文字列の場合は「’」や「’’」で囲んで記述することでプログラム側に認識してもらえます。

 

例:’hello world’

 

データの型は今は大した要素には見えませんが、後々自分でコードを書くときなど出力した文字がどういう型で処理されているかが、コードがちゃんと機能するかにとても影響してくるのでちゃんと把握しておいたほうがいいです。

 

文字列の連結と複製

演算子の意味は前後の値のデータ型によって変化します。

 

さっきの1+1ならば、単純に足し算して2となりますが、’a’+’b’みたいな場合だと下のようになります。

 

>>> 'a'+'b'
'ab'

 

ちなみにちゃんと文字を’’で囲まないと SyntaxError: EOL while scanning string literalとエラーを返されます。

 

 

変数

 

「変数」とは一概に言語で表現しづらいのですが、ざっくりいうとpcのメモリー上にある情報を保管しておく箱のようなものです。

 

そして、この箱にプログラムでの計算結果などを保存することができ、式の計算結果を別の場所で使いたいときにはこの変数の名前を指定することで呼び出せたりします。

 

 

変数の値を保存する

 

変数の値を保存するには「代入文」を使います。pythonだと、代入文は変数名と=で表現することが出来ます。

 

>>> はたち=20

>>> はたち
20

 

例としてはたち=20と指定すると、「はたち」という変数の箱に「20」という数字が保管されたことになります。

 

 

 

PythonにAnacondaをダウンロード・インストールする方法

 

 

 32bit版python

 

http:// https://www.python.org/downloads/の本家のpythonサイトのWindows用のpythonは32bit版で、これは64bit版の動作環境でも普通に機能しますが、64bit版PCの膨大なメモリ領域を使用することができないのでもったいないです。

 

Anacondaとは?

 

Pythonのパッケージをインストールする方法はいくつかありますが、ここでは Anaconda を使ってインストールする方法を紹介します。

 

 

 

Anacondaのダウンロード

 

以下のサイトから Anaconda をダウンロードできます。

https://www.continuum.io/downloads

インストールするときに 2.73.0~か Python のバージョンを選択する必要がありますが何か特別な理由がなければ、新しいバージョンである 3.0~ の最新バージョン (執筆時点では 3.6) を選択すれば良いです。

 

Windows、OS X、Linux 向けにそれぞれの OS 向けにインストーラーが用意されています。自分が使っているプラットフォームのインストーラーを選択してダウンロードします。

 

Anacondaのインストール

 

次はダウンロードしたAnaconda3….exeを起動してインストールします。

 

特にこだわりがなければ出てくる「next」と「I agree」と「finish」をクリックし続けてデフォルトでインストールで問題ないです。(途中のチェックボックスも全部チェックでokです)

 

デフォルト設定の状態でインストールするとC:\Anaconda3にインストールされます。

 

インストールの確認


インストールが完了したら「win」+「R」キーを押してコマンドプロンプトを起動し「idle」と入力しpythonを実行します。

 

以下のように Anaconda でインストールした Python インタープリターが起動するのを確認します。

 

この画面はAnaconda promptから「idle」と入力して起動することもできます。

 

 

 

Python(パイソン)のダウンロードとインストール方法

 

f:id:oruka199665:20170831174345j:plain

 

Pythonとは?

 

 PythonはCやC+などのプログラミング言語の一種で、少ないコード量(文量)で簡単にプログラムがかける・コードが読みやすいといったメリットのあり、プログラム初心者にもよくおすすめされるプログラミング言語です。

 

ですが、単に初心者向けではなく本格的なデータ分析や機械学習にも使われているプログラミング言語です。

 

その証拠にも2017年プログラミング言語ランキングでは第一位に輝き、pythonを使っているプログラマーの平均年収はScalaに続く第2位で601万円となっています。これだけでも学習してみる価値はあると思います。

 

・pythonとは?

Pythonはさまざまな分野のアプリケーションで使われている、極めてパワフルな動的プログラミング言語です。Pythonはよく、Tcl、Perl、Scheme、Javaなどと比較されます。Pythonには次のような特徴があります:

 

・とてもクリーンで読みやすい文法
・強力な内省(イントロスペクション)機能
・直感的なオブジェクト指向
・手続き型のコードによる、自然な表現
・パッケージの階層化もサポートした、完全なモジュール化サポート
・例外ベースのエラーハンドリング
・高レベルな動的データ型
・事実上すべてのタスクをこなせる、広範囲に及ぶ標準ライブラリとサードパーティのモジュール。拡張とモジュールはC/C++で書くのが容易(JythonではJava、IronPythonでは.NET言語を利用)
・アプリケーションに組み込んでスクリプトインタフェースとして利用することが可能
・Pythonはパワフル・・・そして高速

 

Pythonファンはよく、非同期プロセスからzipファイルの圧縮展開までこなす標準ライブラリを説明するのに、「バッテリー同梱(batteries included)」というフレーズを良く使います。

 

言語そのものも、さまざまな問題ドメインを実用的に扱えるほど、柔軟な言語になっています。3行で自分のウェブサーバを構築することもできます。

 

Pythonの強力な動的内省機能と、メタクラス、ダック・タイピング、デコレータなどの上級向けの機能を使うことで、柔軟なデータ駆動のコードを作成することもできます。

 

Pythonを使うと、書きたいコードをすばやく書くことができます。そして、高度に最適化されたバイトコードコンパイラとそのライブラリのお陰で、多くのアプリケーションで十分な速度で実行することができます。

 

伝統的な処理系であるCPythonはバイトコード仮想マシンを使用しています。PyPyネイティブコードへのジャストインタイム(JIT)コンパイルをサポートしています。また、JythonとIronPython(後述)は、それぞれの環境の仮想マシン実装へのJITコンパイルをサポートしています。

 

・Pythonはどこでも実行可能

Pythonは、Windows、Linux/Unix、OS/2、Mac、Amigaなど多くのメジャーなオペレーティング・システムで使うことができます。

 

これ以外にも.NETやJava仮想マシン、Nokia Series 60携帯電話で動くバージョンもあります。一度書いたソースコードが、変更なしにすべての環境で動くことを知ると、うれしくなってくるでしょう。

 

あなたのお気に入りのシステムが登録されていない?もし、その環境でCコンパイラが利用できるのであれば、おそらくPythonが動作するでしょう。

 

ぜひ、news:comp.lang.pythonに質問してみるか、自分でPythonをコンパイルしてみてください。

 

・Pythonはフレンドリー、そして学習しやすい

Pythonのニューズグループは、もっともフレンドリーなグループとして知られています。熱心な開発者やユーザコミュニティが、wikiをメンテナンスしていたり、国際的なものからローカルなものまでさまざまなカンファレンスを運営していたり、開発スプリントを行なっていたり、オンラインのコードリポジトリに貢献しています。

 

Pythonは完全なドキュメントを提供しています。言語に組み込みのドキュメントと、ウェブページとして提供しているものがあります。

 

また、既存の言語ユーザ向けのオンラインチュートリアルと、完全に新しくプログラミングをはじめるユーザ向けのオンラインチュートリアルも提供しています。どのドキュメントも、生産性をすばやく上げられるようにデザインされています。また、さまざまな一級の書籍がPythonの学習を補完してくれるでしょう。

 

・Pythonはオープンソース

Pythonの実装は自由に使用でき、自由に配布でき、商用利用も可能なオープンソースライセンスで提供されています。PythonライセンスはPythonソフトウェア財団が管理しています。

 

(日本語版公式サイトより引用)

 

Pythonの導入方法

 

・Windowsの場合


①.ZIPのダウンロード

MacOS同様に、公式サイトのダウンロードページ( Download Python | Python.org)の黄色いボタン「Download Python 」の最新版をクリックします。

 

f:id:oruka199665:20170821050531j:plain

 

 

※訂正

https://www.python.org/downloads/ に行くと、目立つところに Download the latest version for Windows とあるが、これは 32 bit 版という罠。 Looking for a specific release? から欲しいバージョンのページへ飛び、そのページの下の方にある Download の項に download page へのリンクがあるので、ここへ飛ぶ。直リンクだと、https://www.python.org/downloads/release/python-341/ 。

このページから Windows x86-64 MSI installer を入手し、インストール。

 

 

 

②ZIPを解凍し.exeを起動

python-3.6.2.exeというファイルがダウンロードされますので、ダブルクリックして開くとインストーラーが起動します。

 

f:id:oruka199665:20170831193800p:plain

 

「Install Now」をクリックするとインストールが開始されます。(もしコマンドプロンプトで Pythonコマンドを使いたい場合は、「Add Python 3.6 to PATH」のチェックを入れておいてください。)

 

 

③IDLEの起動

Program Files ディレクトリにPythonがインストールされたら次はスタートメニューをクリックし、Python3.6のフォルダをクリックします。

 

すると「Python 3.6(32-bit)」もしくは「Python 3.6(64-bit)」が入っているかと思いますので、クリックするとPythonが実行された状態のコマンドプロンプトが開きます。

 

f:id:oruka199665:20170831184508j:plain

 

 

IDLEは、Pythonの統合開発環境です。エディタ上でPythonのコードを書いたり実行したりすることができるようになっており、このIDLEを起動した画面がPythonのユーザーインターフェイス(UI)となります。

 

 

※④64bit版(Anaconda)のインストール

07年以降のコンピューターなのになぜか32bit版のpythonしか インストールされていない場合はAnacondaを使って使えるメモリ領域を拡張しておいた方がいいです。(別に32bit版のままでも問題ありませんがこれをやっておくと処理速度が速くなります。)

 

 ⇨PythonにAnacondaをダウンロード・インストールする方法 - 暇人の研究室

 

 オススメなpythonの参考書

 

 

 

 この2つは私がpythonを学習する上で参考にした参考書です。他にも色々読んでみましたが、これらが初心者の私にはとても分かりやすかったので紹介しておきます。

 

終わり

 

Pythonは近年の様々なプログラミング言語ランキングでも、軒並み上位に食い込んでいる人気言語であり、更にデータ解析やAIの分野で広く使われていることから、今後も需要がますます増えると予想されています。

 

コンピューターはただのネットサーフィンの道具ではなく、ちゃんと勉強すれば手作業で何時間もかかる仕事が一瞬で出来るようになる魔法の道具です。

 

これからさらにIT化が進む中でプログラミングは必須スキルとなりつつあり、小学校から必修の分野となっています。

 

なので、今プログラミングをやってる子供はもちろんプログラミングなんて全く知らん!というサラリーマンの方もこの社会で生き残りたいのであれば絶対に勉強しておく必要があると思います。

 

 

【Web技術】APIについての分かりやすい解説

 

APIとは?

 

 APIとは、アプリケーションプログラミングインタフェース( Application Programming Interface)の略称でソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。

 

ひとことでいうと、APIとは「ソフトウェアの機能を共有すること」です。

 

つまり、APIとは自分のソフトウェアを一部公開して、他のソフトウェアと機能を共有できるようにしたものです。

 

このようにソフトウェアの一部をWEB上に公開することによって、誰でも外部から利用することができるようになります。

 

それによって、自分のソフトウェアに他のソフトウェアの機能を埋め込むことができるようになるので、アプリケーション同士で連携することが可能になるのです。

 

皆さんの身近なものだと、Twitterの連携して自分のツイートから性格などを診断するサービスはWebAPIを使った代表的な例です。

 

 

APIの特徴

 

上述したように、APIは自社のソフトウェアの一部の機能を他のソフトウェアでも使えるようにするものですが内部のコードまでは公開していません。

 

またセキュリティの観点から、使用方法についてもなどのルールも定められています。

 

APIは、このような仕様やルールと一緒にまとめてWEB上に公開しているのが一般的です。

 

なお、APIはWEB上で通信して利用することが普通なので「WEB API」と呼ばれることも多く、API=WEB APIというのが一般的になっています。

 

 

 

インターフェースとは何か?

 

APIは日本語名称は「アプリケーションプログラミングインターフェース」です。

 

IT用語としての『インターフェース』とは、人間とコンピューターの間で、情報のやりとりをしてくれる役割を果たすものです。

 

具体的にいうと、パソコンのキーボードやマウス、テレビのリモコンや駅の券売機などがインターフェースにあたります。

 

これらはすべて、人間の操作に従ってコンピューターに情報を伝えて会話をしてくれる翻訳機のような役割をしています。

 

同じように、APIも「プログラマー」の代わりに「アプリケーションに情報や指示を出してプログラミングしてくれる」ような役割をしているので、「アプリケーションプログラミングインターフェース」と呼ばれているのです。

 

 

 

APIの目的

 

APIを作る側としては自社サービスの機能をAPIとして公開することで、同じ特徴をもったサービスが開発しやすくなります。

 

それによって、ある機能に特化させたり、さらに使いやすく一部の機能だけ改良することができ、その結果さらに多くのサービスが生まれ自社サービスの発展に繋がります。

 

またAPIでは他社のデータを使うこともできるので、同じ情報を様々な分野で活用してもらうことで、情報を分析することが容易になり、各分野に特化した分析をおこなうことができます。

 

そこから顧客の傾向や特徴を発見することで、イノベーションが生まれ、新しいビジネスが生まれるのです。

 

反対にAPIを使わ側は作りたい機能がすでにAPIで公開されているなら、同じプログラムを1から作る必要がないので開発時間を大幅に短縮できます。

 

さらに無料で利用できるため、開発コストも大幅に削減でき、かつ効率的にアプリケーションを制作することができます。

 

 

APIは昔からある概念でしたが、近年改めて企業のビジネスを広く外部に提供するための接点や手段としてあらためて注目されています。  

 

 

【R言語】rvestパッケージによるウェブスクレイピング その2

 

 

www.tkstock.site

 

 

 

前回に引き続いて今回は実際のWebサイトをスクレイピングしていきます。

 

というわけで新世紀エヴァンゲリオンのWikipediaのデータ(新世紀エヴァンゲリオン - Wikipedia)をスクレイピングしてタグや文字の検索・抽出を行っていきます。

 

 

 

###サイトのデータを取り込む###

> eva<-read_html("https://ja.wikipedia.org/wiki/新世紀エヴァンゲリオン") 

 

###取り込んだデータの確認###

> eva
{xml_document}
<html class="client-nojs" lang="ja" dir="ltr">
[1] <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UT ...
[2] <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subje ...
>

 

取り込んだサイトデータの全容を把握したいのならば、サイトのページで右クリック⇨ページのソースでそのサイトのHTML構成を見ることが可能です。

 

ちなみにこのページならこんな感じです。

 

f:id:oruka199665:20170710044256j:plain

 

 

###見出しの抽出###

> eva %>% html_nodes("h1")
{xml_nodeset (1)}
[1] <h1 id="firstHeading" class="firstHeading" lang="ja">新世紀エヴァンゲリオン</h1>

 

###見出しの文字だけを抽出###

> eva %>% html_nodes("h1")%>%html_text
[1] "新世紀エヴァンゲリオン"

 

###リンクの抽出###

> eva %>% html_nodes("a") %>% html_attr("href")
[1] NA
[2] "#mw-head"
[3] "#p-search"
[4] "/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Question_book-4.svg"
[5] "/wiki/Wikipedia:%E6%A4%9C%E8%A8%BC%E5%8F%AF%E8%83%BD%E6%80%A7"
[6] "/wiki/Wikipedia:%E4%BF%A1%E9%A0%BC%E3%81%A7%E3%81%8D%E3%82%8B%E6%83%85%E5%A0%B1%E6%BA%90"

 

 

前回は触れませんでしたが、抽出したノードはDOMという形式で階層上に枝分かれした状態で保存されています。

 

なので階層を指定して、その部分にあるタグのみを抽出することも可能です。

 

###head部分のみを抽出する###

> eva %>% html_nodes(xpath="/html/head")
{xml_nodeset (1)}
[1] <head>\n<meta http-equiv="Content-Type" content="text/html; charset=UTF- ...

 

###テーブル(表)の抽出

eva %>% html_nodes(xpath="//table")
{xml_nodeset (44)}
[1] <table class="plainlinks ambox ambox-content" role="presentation"><tr>\ ...
[2] <table class="infobox bordered">\n<tr>\n<th colspan="2" style="backgrou ...
[3] <table class="collapsible collapsed" style="background:transparent; wid ...
[4] <table class="vertical-navbox nowraplinks" style="float:right;clear:rig ...
[5] <table class="wikitable" width="250px" align="right" cellpadding="0" ce ...
[6] <table class="wikitable" border="1">\n<tr>\n<th>機体</th>\n<th>補足</th>\n< ...

 

###<p>タグの要素を抽出###

eva %>% html_nodes(xpath="//p")
{xml_nodeset (94)}
[1] <p>『<b>新世紀エヴァンゲリオン</b>』(しんせいきエヴァンゲリオン、<i>Neon Genesis EVANGELION</i>)は、 ...
[2] <p><a href="/wiki/%E5%BA%B5%E9%87%8E%E7%A7%80%E6%98%8E" title="庵野秀明">庵野 ...
[3] <p><a href="/wiki/1995%E5%B9%B4" title="1995年">1995年</a>10月4日から<a href= ...
[4] <p>漫画とアニメの<a href="/wiki/%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%83%9F% ...
[5] <p><a href="/wiki/2006%E5%B9%B4" title="2006年">2006年</a>には、本作を新たな設定・ストー ...
[6] <p>本作品の著作権者表記はテレビ版に関しては「GAINAX/Project Eva.・テレビ東京」、劇場版に関しては「GAINAX/EVA制 ...
[7] <p>物語の舞台は<a href="/wiki/%E8%A5%BF%E6%9A%A6" title="西暦">西暦</a><a href="/ ...
[8] <p>当初はゲンドウの命令で、そして<b>EVA零号機</b>のパイロットである少女<b><a href="/wiki/%E7%B6%BE%E ...
[9] <p>しかし、<a href="/wiki/%E3%82%A2%E3%83%A1%E3%83%AA%E3%82%AB%E5%90%88%E8% ...
[10] <p>自らが乗ったEVAの手で友人が足を切断する大怪我を負ったことで、シンジはEVAのパイロットを辞めるが、そこに強大な力をもつ第14使徒が現 ...
[11] <p>しかし第15使徒との戦いにおいてアスカが精神攻撃を受け廃人となり…

 

 

"//table"のように要素名の前に//をつけると、階層が異なるすべての要素を抽出できます。